Compare commits
296 Commits
Author | SHA1 | Date | |
---|---|---|---|
33a1145bc5 | |||
29daea9bce | |||
ecb8a8ecd0 | |||
c83476225d | |||
9f9a140432 | |||
69172b58e6 | |||
f0846a7b3a | |||
f8277e55c3 | |||
9366267a63 | |||
57c1644ccc | |||
e9f4b22cb8 | |||
49dd781a82 | |||
a2465b0dc2 | |||
ed8faa11a5 | |||
eeb5d3ba73 | |||
0f355150a2 | |||
baeef3816f | |||
9264e24c42 | |||
65dbeeeb4f | |||
f6138671d2 | |||
34b60be434 | |||
6153c2e972 | |||
433fec51b2 | |||
0b91f54863 | |||
d75c6e2016 | |||
5fde1376b9 | |||
b6ef6c5e8e | |||
376e548cec | |||
4244a226e5 | |||
2e427f05b1 | |||
5829dc8e5a | |||
653ecedafb | |||
e8d5c96147 | |||
cc3d7535fc | |||
53b9a7ec02 | |||
5f6fb9c731 | |||
87e64a102a | |||
0b7e54b4ef | |||
f0dba4ccc3 | |||
854339fdbb | |||
b4c4410432 | |||
5eb78b6e9c | |||
b35dfaeacd | |||
327963f4e5 | |||
b4ae0bb6ae | |||
6e143e072d | |||
6a2eb3dec2 | |||
5fd6df3447 | |||
4d26cffbc8 | |||
410ba675ea | |||
ce94d22212 | |||
829c4e68ef | |||
d9b18ddaa6 | |||
fccf97c4c8 | |||
21b84651a8 | |||
fb3e556523 | |||
c3373bca30 | |||
55c975f1e8 | |||
80917f7d12 | |||
65914a9d03 | |||
c652f8d6d4 | |||
07bc48887e | |||
12b10ee6fe | |||
e5c67d2085 | |||
a045791714 | |||
46bc642385 | |||
9e72d73bfd | |||
a88549f17f | |||
5552be70d5 | |||
d4dc6b09c3 | |||
c210e9f842 | |||
d29f68fc4e | |||
cb386d39f5 | |||
6d007f4a27 | |||
55e6a4cb19 | |||
6bbe2f2750 | |||
22c3c22081 | |||
558e40bf58 | |||
d38df3d927 | |||
562e6c509f | |||
0da77bc453 | |||
c9d56f9204 | |||
5645d5f56f | |||
4a606b8d36 | |||
f2aade3a8e | |||
46820a311f | |||
48a756ea93 | |||
abd6a93fd4 | |||
19b4942c90 | |||
3743a3402d | |||
f4c9f9d057 | |||
c17e0aac04 | |||
d88801d8bf | |||
055b9cc489 | |||
241f13914d | |||
f1df27d5d7 | |||
640f62d63b | |||
c0a7559d3d | |||
f115f1f4a7 | |||
44183a45a8 | |||
c88023470f | |||
d3423a6160 | |||
55c0be74d3 | |||
abe3681ecc | |||
667dcf6b58 | |||
a59fe8c256 | |||
9d9b19da9d | |||
8430e2bf79 | |||
eb460d04ec | |||
6dce3a37e6 | |||
652acf3ce1 | |||
f2afd5b350 | |||
9dbf40f170 | |||
6eb3700f88 | |||
101e57756a | |||
fdb2a4f15f | |||
f165c0fbdc | |||
0695f613d3 | |||
67dbcde6dc | |||
3f5339ac9f | |||
1967373a9d | |||
04ce837b02 | |||
b4c994f02f | |||
d8b71adf1a | |||
a1f29021c6 | |||
ef997ca1fe | |||
8007c1757e | |||
02ed016bf9 | |||
f3f8155027 | |||
7e6a150ab7 | |||
8aafa38c27 | |||
59d69367dc | |||
8097551fd3 | |||
cc164f669d | |||
e51ba7015a | |||
c1a224f677 | |||
1efa604578 | |||
9fe99e92f7 | |||
ee624f1b3f | |||
1d0e24095a | |||
c4b686d621 | |||
185e70c93a | |||
8f8fd8c8de | |||
2b884739f4 | |||
a7d405b5ea | |||
dd331e0881 | |||
a4b3d2ba8a | |||
74183f0982 | |||
8ee5e94a78 | |||
5f337b1d1f | |||
53ee56fdd5 | |||
d10ce72a0e | |||
cae867cb4d | |||
76c4c3e6a2 | |||
a68c08ecf8 | |||
f9dcf43cc4 | |||
42fe77e6b4 | |||
b86a982245 | |||
39ed6ccc06 | |||
0f14c3eaa0 | |||
9e9c4168d6 | |||
bc59853f4e | |||
9b80162a03 | |||
b28e180704 | |||
2deaef94aa | |||
b0ca9320ca | |||
2ae5166a01 | |||
cac468685e | |||
78ac178526 | |||
824b63b012 | |||
d06f3b5856 | |||
37ce7343d4 | |||
a8121bf81b | |||
0944e55141 | |||
c98562f2cb | |||
92f2680feb | |||
eec2f99188 | |||
783c2bde34 | |||
b8f98f0e9e | |||
077e82064b | |||
5e73687068 | |||
b763a7d1be | |||
5f60ae1896 | |||
cae417b3b4 | |||
fd831c74ea | |||
8d42686cc5 | |||
62cc823e29 | |||
c821fa76a6 | |||
672123850b | |||
57cc9730f8 | |||
1d68f32b19 | |||
d710b23223 | |||
5971db9a24 | |||
ccb5914bb2 | |||
6b6f9f8062 | |||
6e4bf4e7ec | |||
ae544e8844 | |||
03ea3a3a5c | |||
3819e5c49b | |||
d96a0e1a63 | |||
5b45cf7d0a | |||
4e1a40279b | |||
ea448788c5 | |||
37e7f42587 | |||
99cefc2ffc | |||
34a9bfd48a | |||
7f15ae6a3a | |||
edea36a8a6 | |||
477f9c3a67 | |||
f183e2a008 | |||
2220a7039f | |||
fa67353eae | |||
da901cee87 | |||
c1d6f7c061 | |||
1fa988e5fd | |||
11e66d50a4 | |||
e00f79c736 | |||
09f4db3fa9 | |||
3fc9435259 | |||
d24a72d435 | |||
9956aa1ba4 | |||
036de121c7 | |||
20469a14dd | |||
8a891e6ffb | |||
ad76b4cabc | |||
9cf66e443e | |||
2506f0fe0e | |||
2aa084290b | |||
b9f6b65900 | |||
41ce2841b1 | |||
a5ba27cf63 | |||
7b415fbce3 | |||
2a117a540e | |||
df15bd2f69 | |||
3dab053420 | |||
7258e1e4d3 | |||
34ef50f6ee | |||
4c5c2362ce | |||
0a5ae54614 | |||
45dd3e5c4b | |||
5ad9d49537 | |||
54fa8a252e | |||
4e3ca82fc7 | |||
d84af00876 | |||
a9cb2db3b4 | |||
454e4f6a63 | |||
6dbd942626 | |||
748a232569 | |||
da4c1108c2 | |||
c4bcab44e4 | |||
8e469c309d | |||
f3bf84a7a2 | |||
b6643a6dd3 | |||
31268e33ef | |||
86c426a504 | |||
afe7d698c8 | |||
0bcc078fe9 | |||
e3e02dbad2 | |||
e563b85946 | |||
cc82146f0a | |||
f4ec4c9066 | |||
108b49bedb | |||
1a5a9a6303 | |||
bf46ac0647 | |||
71850b38e5 | |||
796f29127f | |||
8c43a3ec6d | |||
477e782c7c | |||
65cf8bf9df | |||
e5a982ae13 | |||
f942093e4f | |||
5d15611f84 | |||
1803d687ab | |||
347be35184 | |||
aa0a283e06 | |||
98fcacc9a8 | |||
422ae92303 | |||
7683cacc29 | |||
520112df77 | |||
5453c8c793 | |||
3c5ea937a5 | |||
f16483d7c0 | |||
8072a7b135 | |||
44c6d0c0cf | |||
27dce0bd31 | |||
8abb4e1598 | |||
1cbf73cdfd | |||
b97e18ca5f | |||
0da87980f7 | |||
cbaf89d4a7 | |||
006cbc75e3 | |||
275e340243 | |||
3dcaed64cd | |||
04a5e87fec | |||
36c14be025 | |||
26a064fbe2 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -31,5 +31,3 @@ logs/
|
||||
forge*changelog.txt
|
||||
|
||||
shapegen_output.java
|
||||
/runs
|
||||
/.kotlin
|
||||
|
11
README.md
11
README.md
@ -1,17 +1,18 @@
|
||||
|
||||
# Overdrive That Matters
|
||||
|
||||
Minecraft tech-oriented mod with science fiction style, about matter, and energy, combined.
|
||||
Minecraft mod with science fiction style, about matter, and energy, combined.
|
||||
|
||||
### Required mods
|
||||
|
||||
* [Kotlin for Forge](https://www.curseforge.com/minecraft/mc-mods/kotlin-for-forge) or have Kotlin standard library in classpath (at least 2.0.0 is required)
|
||||
* [Kotlin for Forge](https://www.curseforge.com/minecraft/mc-mods/kotlin-for-forge) or have Kotlin standard library in classpath (at least 1.8.0 is required)
|
||||
|
||||
### Recommended mods
|
||||
|
||||
* [Ferrite Core](https://www.curseforge.com/minecraft/mc-mods/ferritecore), reduces memory usage
|
||||
* In case of Overdrive That Matters, ***greatly*** reduces JVM heap bloat caused by model data being duplicated
|
||||
* Better Random
|
||||
|
||||
* Particle Collider, reduces world join time
|
||||
|
||||
### Mods with special compatibility code
|
||||
|
||||
@ -44,9 +45,9 @@ to avoid bloating git history with generated blobs.
|
||||
|
||||
## License
|
||||
|
||||
Unless otherwise stated in [NOTICE](NOTICE.md), assets in mod are licensed under **2-Clause BSD**
|
||||
Unless otherwise stated in [NOTICE](NOTICE.md), material in mod is licensed under **2-Clause BSD**
|
||||
|
||||
Copyright 2021-Present DBotThePony, GearShocky, YuRaNnNzZZ, Overdrive That Matters Contributors
|
||||
Copyright 2021-Present DBotThePony, GearShocky, Overdrive That Matters Contributors
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
|
211
build.gradle.kts
211
build.gradle.kts
@ -4,7 +4,6 @@ import java.util.Date
|
||||
import java.text.SimpleDateFormat
|
||||
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
||||
import org.gradle.kotlin.dsl.accessors.runtime.addDependencyTo
|
||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
val mod_version: String by project
|
||||
val mc_version: String by project
|
||||
@ -13,15 +12,13 @@ val mod_id: String by project
|
||||
val handle_deps: String by project
|
||||
val use_commit_hash_in_version: String by project
|
||||
val handleDeps = handle_deps.toBoolean()
|
||||
val caffeine_cache_version: String by project
|
||||
|
||||
plugins {
|
||||
java
|
||||
kotlin
|
||||
idea
|
||||
`maven-publish`
|
||||
id("net.neoforged.gradle.userdev")
|
||||
id("net.neoforged.gradle.mixin")
|
||||
id("net.minecraftforge.gradle")
|
||||
id("org.spongepowered.mixin")
|
||||
}
|
||||
|
||||
data class GitInfo(val version: String, val tag: String, val buildNumber: String) {
|
||||
@ -93,13 +90,13 @@ fun getCommitVersion(): GitInfo? {
|
||||
return null
|
||||
}
|
||||
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
println("Targeting Java ${java.toolchain.languageVersion.get()}")
|
||||
|
||||
tasks.withType(KotlinCompile::class.java) {
|
||||
compilerOptions {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = listOf("-Xjvm-default=all")
|
||||
jvmTarget.set(JvmTarget.JVM_21)
|
||||
jvmTarget = java.toolchain.languageVersion.get().toString()
|
||||
}
|
||||
}
|
||||
|
||||
@ -110,9 +107,7 @@ tasks.withType(JavaCompile::class.java) {
|
||||
sourceSets {
|
||||
create("data") {
|
||||
compileClasspath += sourceSets["main"].output
|
||||
compileClasspath += sourceSets["main"].compileClasspath
|
||||
runtimeClasspath += sourceSets["main"].output
|
||||
runtimeClasspath += sourceSets["main"].runtimeClasspath
|
||||
}
|
||||
|
||||
this["main"].resources {
|
||||
@ -123,7 +118,6 @@ sourceSets {
|
||||
|
||||
tasks.test {
|
||||
useJUnitPlatform()
|
||||
maxHeapSize = "4G"
|
||||
}
|
||||
|
||||
configurations {
|
||||
@ -138,16 +132,13 @@ dependencies {
|
||||
val mixin_version: String by project
|
||||
val kommons_version: String by project
|
||||
|
||||
implementation("net.neoforged:neoforge:$forge_version")
|
||||
minecraft("net.minecraftforge:forge:$mc_version-$forge_version")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:${jupiter_version}")
|
||||
|
||||
implementation("thedarkcolour:kotlinforforge-neoforge:$kotlin_for_forge_version")
|
||||
implementation("thedarkcolour:kotlinforforge:$kotlin_for_forge_version")
|
||||
|
||||
jarJar(implementation("com.github.ben-manes.caffeine:caffeine:[$caffeine_cache_version,)")!!)
|
||||
|
||||
jarJar(implementation("ru.dbotthepony.kommons:kommons:[$kommons_version,)") { setTransitive(false) })
|
||||
jarJar(implementation("ru.dbotthepony.kommons:kommons-gson:[$kommons_version,)") { setTransitive(false) })
|
||||
jarJar(implementation("ru.dbotthepony.kommons:kommons-guava:[$kommons_version,)") { setTransitive(false) })
|
||||
jarJar("ru.dbotthepony.kommons:kommons-mc:[$kommons_version,)") { setTransitive(false) }
|
||||
implementation("ru.dbotthepony.kommons:kommons-mc:[$kommons_version,)") { setTransitive(false) }
|
||||
|
||||
compileOnly("yalter.mousetweaks:MouseTweaks:2.23:api")
|
||||
annotationProcessor("org.spongepowered:mixin:${mixin_version}:processor")
|
||||
@ -159,83 +150,74 @@ dependencies {
|
||||
val configured_id: String by project
|
||||
val curios_version: String by project
|
||||
val jei_mc_version: String by project
|
||||
val curios_mc_version: String by project
|
||||
val resourceful_lib_id: String by project
|
||||
val resourceful_config_id: String by project
|
||||
val botarium_id: String by project
|
||||
val ad_astra_id: String by project
|
||||
val worldedit_id: String by project
|
||||
val item_borders_id: String by project
|
||||
val iceberg_id: String by project
|
||||
val prism_lib_id: String by project
|
||||
val cloth_config_version: String by project
|
||||
val condensed_creative_version: String by project
|
||||
val mekanism_version: String by project
|
||||
|
||||
compileOnly("top.theillusivec4.curios:curios-neoforge:${curios_version}+${curios_mc_version}")
|
||||
implementation("curse.maven:cosmetic-armor-reworked-237307:$cosmetic_armor_reworked_id")
|
||||
compileOnly(fg.deobf("curse.maven:curios-309927:${curios_version}"))
|
||||
compileOnly(fg.deobf("curse.maven:cosmetic-armor-reworked-237307:$cosmetic_armor_reworked_id"))
|
||||
|
||||
compileOnly("mezz.jei:jei-${jei_mc_version}-common-api:${jei_version}")
|
||||
compileOnly("mezz.jei:jei-${jei_mc_version}-neoforge-api:${jei_version}")
|
||||
runtimeOnly("mezz.jei:jei-${jei_mc_version}-neoforge:${jei_version}")
|
||||
compileOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-common-api:${jei_version}"))
|
||||
compileOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge-api:${jei_version}"))
|
||||
runtimeOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}"))
|
||||
|
||||
// runtimeOnly("ru.dbotthepony:particle-collider:0.4.5")
|
||||
// runtimeOnly(fg.deobf("ru.dbotthepony:particle-collider:0.4.5"))
|
||||
|
||||
implementation("curse.maven:jade-324717:${jade_id}")
|
||||
//runtimeOnly("curse.maven:configured-457570:${configured_id}")
|
||||
implementation(fg.deobf("curse.maven:jade-324717:${jade_id}"))
|
||||
implementation(fg.deobf("curse.maven:spit-it-out-857141:4888738"))
|
||||
//runtimeOnly(fg.deobf("curse.maven:configured-457570:${configured_id}"))
|
||||
|
||||
compileOnly("curse.maven:resourceful-lib-570073:${resourceful_lib_id}")
|
||||
compileOnly("curse.maven:resourceful-config-714059:${resourceful_config_id}")
|
||||
compileOnly("curse.maven:botarium-704113:${botarium_id}")
|
||||
compileOnly("curse.maven:ad-astra-635042:${ad_astra_id}")
|
||||
runtimeOnly("curse.maven:worldedit-225608:${worldedit_id}")
|
||||
compileOnly(fg.deobf("curse.maven:resourceful-lib-570073:${resourceful_lib_id}"))
|
||||
compileOnly(fg.deobf("curse.maven:resourceful-config-714059:${resourceful_config_id}"))
|
||||
compileOnly(fg.deobf("curse.maven:botarium-704113:${botarium_id}"))
|
||||
compileOnly(fg.deobf("curse.maven:ad-astra-635042:${ad_astra_id}"))
|
||||
// runtimeOnly(fg.deobf("curse.maven:worldedit-225608:${worldedit_id}"))
|
||||
|
||||
runtimeOnly("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config_version}")
|
||||
implementation("io.wispforest:condensed_creative-neoforge:${condensed_creative_version}")
|
||||
// runtimeOnly(fg.deobf("curse.maven:worldedit-225608:${worldedit_fileid}"))
|
||||
// runtimeOnly(fg.deobf("at.ridgo8.moreoverlays:MoreOverlays-updated:${more_overlays_version}"))
|
||||
|
||||
compileOnly("curse.maven:item-borders-513769:${item_borders_id}")
|
||||
// implementation("curse.maven:item-borders-513769:${item_borders_id}")
|
||||
// runtimeOnly("curse.maven:iceberg-520110:${iceberg_id}")
|
||||
// runtimeOnly("curse.maven:prism-lib-638111:${prism_lib_id}")
|
||||
|
||||
// runtimeOnly("curse.maven:worldedit-225608:${worldedit_fileid}")
|
||||
// runtimeOnly("at.ridgo8.moreoverlays:MoreOverlays-updated:${more_overlays_version}")
|
||||
|
||||
// runtimeOnly("curse.maven:cyclops-core-232758:4392602")
|
||||
// runtimeOnly("curse.maven:integrated-dynamics-236307:4391535")
|
||||
// runtimeOnly("curse.maven:integrated-crafting-287357:4391487")
|
||||
// runtimeOnly("curse.maven:integrated-terminals-295910:4400924")
|
||||
// runtimeOnly("curse.maven:common-capabilities-247007:4391468")
|
||||
// runtimeOnly("curse.maven:integrated-tunnels-251389:4344632")
|
||||
|
||||
implementation("mekanism:Mekanism:${mc_version}-${mekanism_version}")
|
||||
|
||||
implementation("curse.maven:iron-chests-228756:5491156")
|
||||
implementation("curse.maven:iron-shulker-boxes-314911:5491246")
|
||||
// runtimeOnly(fg.deobf("curse.maven:cyclops-core-232758:4392602"))
|
||||
// runtimeOnly(fg.deobf("curse.maven:integrated-dynamics-236307:4391535"))
|
||||
// runtimeOnly(fg.deobf("curse.maven:integrated-crafting-287357:4391487"))
|
||||
// runtimeOnly(fg.deobf("curse.maven:integrated-terminals-295910:4400924"))
|
||||
// runtimeOnly(fg.deobf("curse.maven:common-capabilities-247007:4391468"))
|
||||
// runtimeOnly(fg.deobf("curse.maven:integrated-tunnels-251389:4344632"))
|
||||
}
|
||||
}
|
||||
|
||||
configurations {
|
||||
getByName("dataImplementation").extendsFrom(getByName("implementation"))
|
||||
}
|
||||
|
||||
minecraft {
|
||||
accessTransformers {
|
||||
files("src/main/resources/META-INF/accesstransformer.cfg")
|
||||
}
|
||||
mappings("official", mc_version)
|
||||
|
||||
copyIdeResources.set(true)
|
||||
|
||||
accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg"))
|
||||
|
||||
runs {
|
||||
configureEach {
|
||||
workingDirectory = project.file("run").absolutePath
|
||||
|
||||
// "SCAN": For mods scan.
|
||||
// "REGISTRIES": For firing of registry events.
|
||||
// "REGISTRYDUMP": For getting the contents of all registries.
|
||||
systemProperty("forge.logging.markers", "REGISTRIES")
|
||||
property("forge.logging.markers", "REGISTRIES")
|
||||
|
||||
// Log4j console level
|
||||
systemProperty("forge.logging.console.level", "debug")
|
||||
|
||||
dependencies {
|
||||
runtime("com.github.ben-manes.caffeine:caffeine:[$caffeine_cache_version,)")
|
||||
}
|
||||
property("forge.logging.console.level", "debug")
|
||||
}
|
||||
|
||||
getByName("client") {
|
||||
create("client") {
|
||||
mods {
|
||||
create(mod_id) {
|
||||
source(sourceSets["main"])
|
||||
}
|
||||
}
|
||||
|
||||
val usernameStream = FastByteArrayOutputStream()
|
||||
|
||||
val gotUsername = exec {
|
||||
@ -248,32 +230,41 @@ minecraft {
|
||||
val originalUsername = usernameStream.array.copyOfRange(0, usernameStream.length).toString(Charsets.UTF_8).trim()
|
||||
|
||||
if (originalUsername.isNotEmpty()) {
|
||||
programArguments.addAll("--username", originalUsername)
|
||||
args("--username", originalUsername)
|
||||
} else {
|
||||
programArguments.addAll("--username", "Dev_${System.getProperty("user.name")}")
|
||||
args("--username", "Dev_${System.getProperty("user.name")}")
|
||||
}
|
||||
} else {
|
||||
programArguments.addAll("--username", "Dev_${System.getProperty("user.name")}")
|
||||
args("--username", "Dev_${System.getProperty("user.name")}")
|
||||
}
|
||||
}
|
||||
|
||||
getByName("server") {
|
||||
programArguments.addAll("nogui")
|
||||
create("server") {
|
||||
mods {
|
||||
create(mod_id) {
|
||||
source(sourceSets["main"])
|
||||
}
|
||||
}
|
||||
|
||||
args("nogui")
|
||||
}
|
||||
|
||||
getByName("data") {
|
||||
programArguments.addAll("--mod", mod_id, "--all", "--output", file("src/data/resources/").absolutePath, "--existing", file("src/main/resources/").absolutePath)
|
||||
create("data") {
|
||||
args("--mod", mod_id, "--all", "--output", file("src/data/resources/"), "--existing", file("src/main/resources/"))
|
||||
|
||||
modSources(sourceSets["main"], sourceSets["data"])
|
||||
mods {
|
||||
create(mod_id) {
|
||||
sources(sourceSets["main"], sourceSets["data"])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mixin {
|
||||
add(sourceSets.main.get(), "$mod_id.refmap.json")
|
||||
config("$mod_id.mixins.json")
|
||||
config("$mod_id.ironchest.mixins.json")
|
||||
config("$mod_id.ironshulkerbox.mixins.json")
|
||||
// config("$mod_id.ad_astra.mixins.json")
|
||||
config("$mod_id.ad_astra.mixins.json")
|
||||
}
|
||||
|
||||
repositories {
|
||||
@ -287,6 +278,7 @@ repositories {
|
||||
|
||||
content {
|
||||
includeGroup("yalter.mousetweaks")
|
||||
includeGroup("mekanism")
|
||||
includeGroup("lain.mods.cos")
|
||||
includeGroup("at.ridgo8.moreoverlays")
|
||||
includeGroup("ru.dbotthepony")
|
||||
@ -295,15 +287,6 @@ repositories {
|
||||
}
|
||||
}
|
||||
|
||||
maven(url = "https://maven.neoforged.net/releases") {
|
||||
name = "Neoforge"
|
||||
|
||||
content {
|
||||
includeGroup("net.neoforged.gradle")
|
||||
includeGroup("net.neoforged")
|
||||
}
|
||||
}
|
||||
|
||||
maven {
|
||||
name = "Kotlin for Forge"
|
||||
url = uri("https://thedarkcolour.github.io/KotlinForForge/")
|
||||
@ -325,37 +308,13 @@ repositories {
|
||||
}
|
||||
|
||||
maven {
|
||||
url = uri("https://maven.octo-studios.com/releases")
|
||||
url = uri("https://maven.theillusivec4.top/")
|
||||
|
||||
content {
|
||||
includeGroup("top.theillusivec4.curios")
|
||||
}
|
||||
}
|
||||
|
||||
maven {
|
||||
url = uri("https://maven.shedaniel.me/")
|
||||
|
||||
content {
|
||||
includeGroup("me.shedaniel.cloth")
|
||||
}
|
||||
}
|
||||
|
||||
maven {
|
||||
url = uri("https://maven.wispforest.io")
|
||||
|
||||
content {
|
||||
includeGroup("io.wispforest")
|
||||
}
|
||||
}
|
||||
|
||||
maven {
|
||||
url = uri("https://modmaven.dev/")
|
||||
|
||||
content {
|
||||
includeGroup("mekanism")
|
||||
}
|
||||
}
|
||||
|
||||
// mavenCentral()
|
||||
}
|
||||
|
||||
@ -373,7 +332,10 @@ fun org.gradle.jvm.tasks.Jar.attachManifest() {
|
||||
}
|
||||
}
|
||||
|
||||
// Example configuration to allow publishing using the maven-publish plugin
|
||||
// This is the preferred method to reobfuscate your jar file
|
||||
tasks.jar.configure {
|
||||
finalizedBy("reobfJar")
|
||||
attachManifest()
|
||||
archiveClassifier.set("slim")
|
||||
archiveVersion.set(gitVersion.jarName)
|
||||
@ -384,18 +346,15 @@ tasks.jarJar.configure {
|
||||
archiveVersion.set(gitVersion.jarName)
|
||||
}
|
||||
|
||||
tasks.assemble.configure {
|
||||
dependsOn(tasks.jarJar)
|
||||
}
|
||||
|
||||
tasks.withType(ProcessResources::class.java) {
|
||||
val replaceProperties = mapOf(
|
||||
"mc_version" to mc_version,
|
||||
"mod_id" to mod_id,
|
||||
"mod_version" to gitVersion.modVersion
|
||||
)
|
||||
inputs.properties(replaceProperties)
|
||||
|
||||
filesMatching(arrayListOf("META-INF/neoforge.mods.toml", "pack.mcmeta")) {
|
||||
filesMatching(arrayListOf("META-INF/mods.toml", "pack.mcmeta")) {
|
||||
expand(replaceProperties)
|
||||
}
|
||||
}
|
||||
@ -405,6 +364,12 @@ tasks {
|
||||
archiveClassifier.set("sources")
|
||||
from(sourceSets.main.get().allSource)
|
||||
}
|
||||
|
||||
create("deobfJar", org.gradle.jvm.tasks.Jar::class.java) {
|
||||
archiveClassifier.set("deobf")
|
||||
from(sourceSets.main.get().output)
|
||||
attachManifest()
|
||||
}
|
||||
}
|
||||
|
||||
if (project.hasProperty("mavenUser") && project.hasProperty("mavenPassword") && project.hasProperty("mavenUrl")) {
|
||||
@ -418,6 +383,7 @@ if (project.hasProperty("mavenUser") && project.hasProperty("mavenPassword") &&
|
||||
// from(components["java"])
|
||||
artifact(tasks["jar"])
|
||||
artifact(tasks["sourceJar"])
|
||||
artifact(tasks["deobfJar"])
|
||||
|
||||
version = gitVersion.publishVersion
|
||||
|
||||
@ -446,10 +412,3 @@ if (project.hasProperty("mavenUser") && project.hasProperty("mavenPassword") &&
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
idea {
|
||||
module {
|
||||
isDownloadSources = true
|
||||
isDownloadJavadoc = true
|
||||
}
|
||||
}
|
||||
|
@ -1,72 +0,0 @@
|
||||
|
||||
const args = process.argv.slice(2)
|
||||
|
||||
if (args.length < 2) {
|
||||
console.error('Usage: node base_with_mask.js <base_name> <mask_name> [subfolder]\n')
|
||||
console.error('If subfolder specified, resulting file name will contain only color name\n')
|
||||
console.error('Subfolder is relative to base texture path\n')
|
||||
process.exit(2)
|
||||
}
|
||||
|
||||
const fs = require('fs')
|
||||
const {colorsWithWhite, rootFolder, splitName, getSize} = require('./include.js')
|
||||
const child_process = require('child_process');
|
||||
|
||||
(async function() {
|
||||
const baseTexture = args[0]
|
||||
const maskTexture = args[1]
|
||||
const subfolder = args[2] ?? ''
|
||||
|
||||
const fBase = `${rootFolder}${baseTexture}.png`
|
||||
const fMask = `${rootFolder}${maskTexture}.png`
|
||||
|
||||
if (!fs.existsSync(fBase)) {
|
||||
process.stderr.write(`${fBase} does not exist\n`)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
if (!fs.existsSync(fMask)) {
|
||||
process.stderr.write(`${fMask} does not exist\n`)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const [fileName, _, fullBaseFolder] = splitName(baseTexture)
|
||||
const bSize = (await getSize(fBase))[2]
|
||||
const mSize = (await getSize(fMask))[2]
|
||||
|
||||
if (subfolder !== '') {
|
||||
fs.mkdirSync(`${fullBaseFolder}/${subfolder}`, {recursive: true})
|
||||
}
|
||||
|
||||
if (bSize != mSize) {
|
||||
process.stderr.write(`${fBase} has size of ${bSize}, ${fMask} has size of ${mSize}!\n`)
|
||||
process.exit(3)
|
||||
}
|
||||
|
||||
for (const [name, _, xc] of colorsWithWhite) {
|
||||
const outputFilename = subfolder === '' ? `${fullBaseFolder}/${fileName}_${name}.png` : `${fullBaseFolder}/${subfolder}/${name}.png`
|
||||
|
||||
const magick = child_process.spawn('magick', [
|
||||
'convert',
|
||||
|
||||
fBase,
|
||||
|
||||
'(',
|
||||
fMask,
|
||||
'-size', bSize,
|
||||
xc,
|
||||
'-channel', 'rgb',
|
||||
'-compose', 'Multiply',
|
||||
'-composite',
|
||||
')',
|
||||
|
||||
'-compose', 'Over',
|
||||
'-composite',
|
||||
|
||||
outputFilename])
|
||||
|
||||
magick.stdout.pipe(process.stdout)
|
||||
magick.stderr.pipe(process.stderr)
|
||||
}
|
||||
})();
|
||||
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
node ./base_with_mask.js block/decorative/computer_base block/decorative/computer_base_mask computer_base
|
||||
node ./base_with_mask.js block/decorative/computer_screen block/decorative/computer_screen_mask computer_screen
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
node ./base_with_mask.js block/essence_storage block/essence_storage_mask essence_storage
|
@ -1,76 +0,0 @@
|
||||
|
||||
const colors = [
|
||||
['orange', [245, 116, 16]],
|
||||
['magenta', [186, 63, 175]],
|
||||
['light_blue', [59, 180, 219]],
|
||||
['yellow', [252, 199, 36]],
|
||||
['lime', [111, 187, 24]],
|
||||
['pink', [243, 139, 170]],
|
||||
['gray', [62, 66, 70]],
|
||||
['light_gray', [140, 140, 131]],
|
||||
['cyan', [22, 134, 145]],
|
||||
['purple', [116, 38, 169]],
|
||||
['blue', [51, 53, 155]],
|
||||
['brown', [114, 71, 40]],
|
||||
['green', [84, 109, 28]],
|
||||
['red', [156, 37, 34]],
|
||||
['black', [31, 31, 35]],
|
||||
]
|
||||
|
||||
const white = ['white', [235, 235, 235]]
|
||||
const colorsWithWhite = [...colors]
|
||||
colorsWithWhite.push(white)
|
||||
|
||||
function addRgbString(values) {
|
||||
for (const row of values) {
|
||||
const rgb = row[1]
|
||||
row.push(`xc:rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`)
|
||||
}
|
||||
}
|
||||
|
||||
addRgbString(colors)
|
||||
addRgbString(colorsWithWhite)
|
||||
|
||||
const rootFolder = '../src/main/resources/assets/overdrive_that_matters/textures/'
|
||||
const child_process = require('child_process')
|
||||
|
||||
process.stdout.setMaxListeners(900)
|
||||
process.stderr.setMaxListeners(900)
|
||||
|
||||
async function getSize(path) {
|
||||
const identify = child_process.spawn('magick', [
|
||||
'identify',
|
||||
path,
|
||||
])
|
||||
|
||||
identify.stderr.pipe(process.stderr)
|
||||
|
||||
const chunks = []
|
||||
identify.stdout.on('data', (a) => chunks.push(a))
|
||||
|
||||
await new Promise((resolve) => {
|
||||
identify.on('close', () => resolve())
|
||||
})
|
||||
|
||||
const chunk = chunks[0].toString('utf-8')
|
||||
const size = chunk.match(/PNG ([0-9]+)x([0-9]+)/)
|
||||
const width = parseInt(size[1])
|
||||
const height = parseInt(size[2])
|
||||
|
||||
return [width, height, `${width}x${height}`]
|
||||
}
|
||||
|
||||
function splitName(name) {
|
||||
const splitted = name.split('/')
|
||||
const fileName = splitted.pop()
|
||||
const baseFolder = splitted.join('/')
|
||||
const fullBaseFolder = `${rootFolder}${baseFolder}`
|
||||
|
||||
return [fileName, baseFolder, fullBaseFolder, fileName.indexOf('_white') == -1 ? colorsWithWhite : colors]
|
||||
}
|
||||
|
||||
exports.colors = colors
|
||||
exports.colorsWithWhite = colorsWithWhite
|
||||
exports.rootFolder = rootFolder
|
||||
exports.splitName = splitName
|
||||
exports.getSize = getSize
|
@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
node ./base_with_mask.js block/matter_replicator_base block/matter_replicator_base_mask matter_replicator_base
|
||||
node ./base_with_mask.js block/matter_replicator block/matter_replicator_mask matter_replicator
|
||||
|
@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
node ./base_with_mask.js block/tritanium_anvil block/tritanium_anvil_mask tritanium_anvil
|
||||
node ./base_with_mask.js block/tritanium_anvil_top block/tritanium_anvil_top_mask tritanium_anvil_top
|
@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
node ./base_with_mask.js block/decorative/tritanium_door_top block/decorative/tritanium_door_color_top
|
||||
node ./base_with_mask.js block/decorative/tritanium_door_bottom block/decorative/tritanium_door_color_bottom
|
||||
|
56
color_doors.js
Normal file
56
color_doors.js
Normal file
@ -0,0 +1,56 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const fs = require('fs')
|
||||
const root_main = './src/main/resources/assets/overdrive_that_matters/textures/block/decorative/'
|
||||
const child_process = require('child_process')
|
||||
|
||||
const colors = [
|
||||
['orange', [245, 116, 16]],
|
||||
['magenta', [186, 63, 175]],
|
||||
['light_blue', [59, 180, 219]],
|
||||
['yellow', [252, 199, 36]],
|
||||
['lime', [111, 187, 24]],
|
||||
['pink', [243, 139, 170]],
|
||||
['gray', [62, 66, 70]],
|
||||
['light_gray', [140, 140, 131]],
|
||||
['cyan', [22, 134, 145]],
|
||||
['purple', [116, 38, 169]],
|
||||
['blue', [51, 53, 155]],
|
||||
['brown', [114, 71, 40]],
|
||||
['green', [84, 109, 28]],
|
||||
['red', [156, 37, 34]],
|
||||
['black', [31, 31, 35]],
|
||||
['white', [235, 235, 235]],
|
||||
]
|
||||
|
||||
process.stderr.setMaxListeners(40)
|
||||
process.stdout.setMaxListeners(40);
|
||||
|
||||
(async function() {
|
||||
for (const [base, overlay, nameBase] of [['tritanium_door_base_top', 'tritanium_door_color_top', 'tritanium_door_top'], ['tritanium_door_base_bottom', 'tritanium_door_color_bottom', 'tritanium_door_bottom']]) {
|
||||
for (const [name, rgb] of colors) {
|
||||
const magick = child_process.spawn('magick', [
|
||||
'convert',
|
||||
|
||||
`${root_main}${base}.png`,
|
||||
|
||||
'(',
|
||||
`${root_main}${overlay}.png`,
|
||||
'-size', '16x16',
|
||||
`xc:rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`,
|
||||
'-channel', 'rgb',
|
||||
'-compose', 'Multiply',
|
||||
'-composite',
|
||||
')',
|
||||
|
||||
'-compose', 'Over',
|
||||
'-composite',
|
||||
|
||||
`${root_main}/${nameBase}_${name}.png`])
|
||||
|
||||
magick.stdout.pipe(process.stdout)
|
||||
magick.stderr.pipe(process.stderr)
|
||||
}
|
||||
}
|
||||
})()
|
@ -6,44 +6,34 @@ kotlin.stdlib.default.dependency=false
|
||||
org.gradle.vfs.watch=true
|
||||
|
||||
mod_id=overdrive_that_matters
|
||||
mod_version=1.5
|
||||
mod_version=1.4
|
||||
|
||||
use_commit_hash_in_version=true
|
||||
|
||||
mc_version=1.21.1
|
||||
jei_mc_version=1.21.1
|
||||
curios_mc_version=1.21
|
||||
mc_version=1.19.2
|
||||
jei_mc_version=1.19.2
|
||||
curios_mc_version=1.19.2
|
||||
|
||||
forge_gradle_version=7.0.153
|
||||
forge_version=21.1.21
|
||||
forge_gradle_version=[6.0.14,6.2)
|
||||
forge_version=43.3.7
|
||||
mixingradle_version=0.7.33
|
||||
mixin_version=0.8.5
|
||||
|
||||
neogradle.subsystems.parchment.minecraftVersion=1.21.1
|
||||
neogradle.subsystems.parchment.mappingsVersion=2024.11.17
|
||||
kommons_version=3.0.2
|
||||
|
||||
kommons_version=3.9.1
|
||||
caffeine_cache_version=3.1.5
|
||||
|
||||
jei_version=19.16.4.171
|
||||
jei_version=11.6.0.1018
|
||||
jupiter_version=5.9.2
|
||||
curios_version=9.0.5
|
||||
cosmetic_armor_reworked_id=5610814
|
||||
ad_astra_id=4594155
|
||||
botarium_id=4594094
|
||||
resourceful_lib_id=4598948
|
||||
resourceful_config_id=4576455
|
||||
jade_id=5591256
|
||||
curios_version=4985476
|
||||
cosmetic_armor_reworked_id=4016732
|
||||
ad_astra_id=4643668
|
||||
botarium_id=4306551
|
||||
resourceful_lib_id=4477753
|
||||
resourceful_config_id=4444198
|
||||
jade_id=4914105
|
||||
configured_id=4462894
|
||||
worldedit_id=5830452
|
||||
item_borders_id=5591010
|
||||
iceberg_id=5750025
|
||||
prism_lib_id=5625115
|
||||
cloth_config_version=15.0.130
|
||||
condensed_creative_version=3.4.1+1.21
|
||||
mekanism_version=10.7.7.64
|
||||
worldedit_id=3922622
|
||||
|
||||
kotlin_for_forge_version=5.5.0
|
||||
kotlin_version=2.0.10
|
||||
kotlin_for_forge_version=3.12.0
|
||||
kotlin_version=1.8.21
|
||||
|
||||
handle_deps=true
|
||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
|
||||
networkTimeout=10000
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
11
gradlew
vendored
11
gradlew
vendored
@ -85,6 +85,9 @@ done
|
||||
APP_BASE_NAME=${0##*/}
|
||||
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
|
||||
|
||||
@ -141,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=SC3045
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
@ -149,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=SC3045
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
@ -194,10 +197,6 @@ 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, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
|
@ -4,7 +4,6 @@ println("Running with Java ${System.getProperty("java.version")} on JVM: ${Syste
|
||||
pluginManagement {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
maven(url = "https://maven.neoforged.net/releases")
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,12 +14,20 @@ plugins {
|
||||
buildscript {
|
||||
repositories {
|
||||
// These repositories are only for Gradle plugins, put any other repositories in the repository block further below
|
||||
maven(url = "https://maven.neoforged.net/releases") {
|
||||
name = "Neoforge"
|
||||
maven(url = "https://maven.minecraftforge.net") {
|
||||
name = "Minecraft Forge"
|
||||
|
||||
content {
|
||||
includeGroup("net.neoforged.gradle")
|
||||
includeGroup("net.neoforged")
|
||||
includeGroup("net.minecraftforge.gradle")
|
||||
includeGroup("net.minecraftforge")
|
||||
}
|
||||
}
|
||||
|
||||
maven(url = "https://repo.spongepowered.org/repository/maven-public/") {
|
||||
name = "Spongepowered"
|
||||
|
||||
content {
|
||||
includeGroup("org.spongepowered")
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,9 +39,9 @@ buildscript {
|
||||
val forge_gradle_version: String by settings
|
||||
val mixingradle_version: String by settings
|
||||
|
||||
classpath(group = "net.neoforged.gradle", name = "userdev", version = forge_gradle_version)
|
||||
classpath(group = "net.neoforged.gradle", name = "mixin", version = forge_gradle_version)
|
||||
classpath(group = "net.minecraftforge.gradle", name = "ForgeGradle", version = forge_gradle_version)
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}")
|
||||
classpath("org.spongepowered:mixingradle:${mixingradle_version}")
|
||||
|
||||
classpath(group = "org.gradle.toolchains", name = "foojay-resolver", version = "0.5.0")
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,56 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.data.worldgen.BootstrapContext
|
||||
import net.minecraft.tags.DamageTypeTags
|
||||
import net.minecraft.world.damagesource.DamageEffects
|
||||
import net.minecraft.world.damagesource.DamageScaling
|
||||
import net.minecraft.world.damagesource.DamageType
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.TagsProvider
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
|
||||
fun registerDamageTypes(context: BootstrapContext<DamageType>) {
|
||||
context.register(MDamageTypes.EXOPACK_PROBE, DamageType("otm_exopack_probe", DamageScaling.NEVER, 4.0f))
|
||||
context.register(MDamageTypes.BECOME_ANDROID, DamageType("otm_become_android", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.BECOME_HUMANE, DamageType("otm_become_humane", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.EVENT_HORIZON, DamageType("otm_event_horizon", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.HAWKING_RADIATION, DamageType("otm_hawking_radiation", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.EMP, DamageType("otm_emp", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.SHOCKWAVE, DamageType("otm_shockwave", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.PLASMA, DamageType("otm_plasma", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.COSMIC_RAYS, DamageType("otm_cosmic_rays", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.EXPLOSIVE_HAMMER, DamageType("otm_explosive_hammer", DamageScaling.NEVER, 0.1f))
|
||||
context.register(MDamageTypes.HAMMER_NAIL, DamageType("otm_hammer_nail", DamageScaling.NEVER, 0.1f))
|
||||
context.register(MDamageTypes.ANDROID_DISCHARGE, DamageType("otm_android_discharge", DamageScaling.NEVER, 4.0f))
|
||||
context.register(MDamageTypes.NOT_NORMAL_PILL, DamageType("otm_not_normal_pill", DamageScaling.NEVER, 0f, DamageEffects.DROWNING))
|
||||
}
|
||||
|
||||
fun registerDamageTypeTags(provider: TagsProvider.Delegate<DamageType>) {
|
||||
val ignoreArmor = provider.Appender(DamageTypeTags.BYPASSES_ARMOR)
|
||||
val ignoreMagic = provider.Appender(DamageTypeTags.BYPASSES_ENCHANTMENTS)
|
||||
val ignoreInvl = provider.Appender(DamageTypeTags.BYPASSES_INVULNERABILITY)
|
||||
|
||||
ignoreArmor
|
||||
.add(MDamageTypes.EXOPACK_PROBE)
|
||||
.add(MDamageTypes.BECOME_ANDROID)
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.EVENT_HORIZON)
|
||||
.add(MDamageTypes.EMP)
|
||||
.add(MDamageTypes.SHOCKWAVE)
|
||||
.add(MDamageTypes.COSMIC_RAYS)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
.add(MDamageTypes.NOT_NORMAL_PILL)
|
||||
|
||||
ignoreMagic
|
||||
.add(MDamageTypes.EXOPACK_PROBE)
|
||||
.add(MDamageTypes.BECOME_ANDROID)
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.COSMIC_RAYS)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
.add(MDamageTypes.NOT_NORMAL_PILL)
|
||||
|
||||
ignoreInvl
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.BECOME_ANDROID)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
.add(MDamageTypes.NOT_NORMAL_PILL)
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.core.RegistrySetBuilder
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.advancements.Advancement
|
||||
import net.minecraft.core.Registry
|
||||
import net.minecraft.data.advancements.AdvancementProvider
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.level.block.Block
|
||||
@ -15,29 +15,28 @@ import net.minecraft.world.level.block.TrapDoorBlock
|
||||
import net.minecraft.world.level.block.state.properties.DoorHingeSide
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf
|
||||
import net.minecraft.world.level.block.state.properties.Half
|
||||
import net.neoforged.bus.api.SubscribeEvent
|
||||
import net.neoforged.fml.common.EventBusSubscriber
|
||||
import net.neoforged.neoforge.client.model.generators.ModelFile
|
||||
import net.neoforged.neoforge.common.data.AdvancementProvider
|
||||
import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import net.neoforged.neoforge.registries.NeoForgeRegistries
|
||||
import net.minecraftforge.client.model.generators.ModelFile
|
||||
import net.minecraftforge.common.data.ExistingFileHelper
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent
|
||||
import net.minecraftforge.fml.common.Mod
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import net.minecraftforge.registries.ForgeRegistries
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.player.android.AndroidResearchDataProvider
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.util.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchDataProvider
|
||||
import ru.dbotthepony.mc.otm.block.*
|
||||
import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.BatteryBankProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.MatterBankProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.MatteryBlockStateProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.items.MatteryItemModelProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.AddEnglishLanguage
|
||||
import ru.dbotthepony.mc.otm.datagen.models.MatteryBlockModelProvider
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.util.GJRAND64RandomSource
|
||||
import ru.dbotthepony.mc.otm.data.FlywheelMaterialDataProvider
|
||||
import ru.dbotthepony.mc.otm.registry.*
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.advancements.addAdvancements
|
||||
import ru.dbotthepony.mc.otm.datagen.advancements.addAndroidAdvancements
|
||||
import ru.dbotthepony.mc.otm.datagen.advancements.addMachineAdvancements
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.addBlockModels
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.addBlockStates
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.addComplexBlockStates
|
||||
@ -48,31 +47,19 @@ import ru.dbotthepony.mc.otm.datagen.loot.*
|
||||
import ru.dbotthepony.mc.otm.datagen.loot.LootModifiers
|
||||
import ru.dbotthepony.mc.otm.datagen.recipes.*
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.TagsProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addConstructionTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addDyeTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addEquipmentTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addMineableTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addResourceTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addStructureTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addSuspiciousTags
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.addTags
|
||||
import ru.dbotthepony.mc.otm.matter.MatterDataProvider
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
||||
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
|
||||
import java.util.function.Consumer
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
internal fun modLocation(string: String) = ResourceLocation(DataGen.MOD_ID, string)
|
||||
internal fun modLootTable(string: String) = ResourceKey.create(Registries.LOOT_TABLE, ResourceLocation(DataGen.MOD_ID, string))
|
||||
|
||||
@EventBusSubscriber(modid = DataGen.MOD_ID, bus = EventBusSubscriber.Bus.MOD)
|
||||
@Mod.EventBusSubscriber(modid = DataGen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||
object DataGen {
|
||||
const val MOD_ID = OverdriveThatMatters.MOD_ID
|
||||
|
||||
// for things which need to be random (e.g. UUIDs),
|
||||
// so builds continue to be reproducible
|
||||
val random = GJRAND64RandomSource(822393940230754753L, -2728812999467395658L)
|
||||
|
||||
var blockModelProvider: MatteryBlockModelProvider by WriteOnce()
|
||||
private set
|
||||
var itemModelProvider: MatteryItemModelProvider by WriteOnce()
|
||||
@ -91,19 +78,12 @@ object DataGen {
|
||||
private set
|
||||
var matterData: MatterDataProvider by WriteOnce()
|
||||
private set
|
||||
var flywheelData: FlywheelMaterialDataProvider by WriteOnce()
|
||||
private set
|
||||
|
||||
fun decorativeCubeAll(vararg blocks: Block) {
|
||||
blockModelProvider.decorativeCubeAll(*blocks)
|
||||
blockStateProvider.simpleBlockM(*blocks)
|
||||
}
|
||||
|
||||
fun decorativeCubeAllCutout(vararg blocks: Block) {
|
||||
blockModelProvider.decorativeCubeAllCutout(*blocks)
|
||||
blockStateProvider.simpleBlockM(*blocks)
|
||||
}
|
||||
|
||||
fun decorativeCubeAll(subdir: String, vararg blocks: Block) {
|
||||
blockModelProvider.decorativeCubeAll(subdir, *blocks)
|
||||
blockStateProvider.simpleBlockM(*blocks)
|
||||
@ -440,7 +420,7 @@ object DataGen {
|
||||
}
|
||||
}
|
||||
|
||||
fun decoratives(list: ColoredDecorativeBlock<*>) {
|
||||
fun decoratives(list: ColoredDecorativeBlock) {
|
||||
for (block in list.blocks.values) {
|
||||
decorativeCubeAll(block)
|
||||
}
|
||||
@ -450,7 +430,7 @@ object DataGen {
|
||||
}
|
||||
}
|
||||
|
||||
fun decoratives(list: DecorativeBlock<*>) {
|
||||
fun decoratives(list: DecorativeBlock) {
|
||||
for (block in list.allBlocks.values) {
|
||||
decorativeCubeAll(block)
|
||||
}
|
||||
@ -460,7 +440,7 @@ object DataGen {
|
||||
}
|
||||
}
|
||||
|
||||
fun decoratives(subdir: String, list: ColoredDecorativeBlock<*>) {
|
||||
fun decoratives(subdir: String, list: ColoredDecorativeBlock) {
|
||||
for (block in list.blocks.values) {
|
||||
decorativeCubeAll(subdir, block)
|
||||
}
|
||||
@ -470,7 +450,7 @@ object DataGen {
|
||||
}
|
||||
}
|
||||
|
||||
fun decoratives(subdir: String, list: DecorativeBlock<*>) {
|
||||
fun decoratives(subdir: String, list: DecorativeBlock) {
|
||||
for (block in list.allBlocks.values) {
|
||||
decorativeCubeAll(subdir, block)
|
||||
}
|
||||
@ -480,7 +460,7 @@ object DataGen {
|
||||
}
|
||||
}
|
||||
|
||||
fun decoratives(subdir: String, suffix: String, list: ColoredDecorativeBlock<*>) {
|
||||
fun decoratives(subdir: String, suffix: String, list: ColoredDecorativeBlock) {
|
||||
for (block in list.blocks.values) {
|
||||
decorativeCubeAll(subdir, suffix, block)
|
||||
}
|
||||
@ -490,7 +470,7 @@ object DataGen {
|
||||
}
|
||||
}
|
||||
|
||||
fun decoratives(subdir: String, suffix: String, list: DecorativeBlock<*>) {
|
||||
fun decoratives(subdir: String, suffix: String, list: DecorativeBlock) {
|
||||
for (block in list.allBlocks.values) {
|
||||
decorativeCubeAll(subdir, suffix, block)
|
||||
}
|
||||
@ -501,14 +481,15 @@ object DataGen {
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@JvmStatic
|
||||
@Suppress("unused")
|
||||
fun onGatherData(event: GatherDataEvent) {
|
||||
val blockModelProvider = MatteryBlockModelProvider(event)
|
||||
val blockStateProvider = MatteryBlockStateProvider(event)
|
||||
val itemModelProvider = MatteryItemModelProvider(event)
|
||||
val lootTableProvider = LootTables(event)
|
||||
val recipeProvider = MatteryRecipeProvider(event)
|
||||
val lootModifier = LootModifiers(event)
|
||||
val lootTableProvider = LootTables(event.generator)
|
||||
val recipeProvider = MatteryRecipeProvider(event.generator)
|
||||
val lootModifier = LootModifiers(event.generator)
|
||||
val languageProvider = MatteryLanguageProvider(event.generator)
|
||||
val matterData = MatterDataProvider(event)
|
||||
val researchProvider = AndroidResearchDataProvider(event).also { it.exec { addResearchData(it, languageProvider) } }
|
||||
@ -522,32 +503,24 @@ object DataGen {
|
||||
this.languageProvider = languageProvider
|
||||
this.researchProvider = researchProvider
|
||||
this.matterData = matterData
|
||||
this.flywheelData = FlywheelMaterialDataProvider(event)
|
||||
|
||||
val tagsProvider = TagsProvider(event)
|
||||
val advancementProvider = object : AdvancementProvider(event.generator.packOutput, event.lookupProvider, event.existingFileHelper, listOf(
|
||||
AdvancementGenerator { registries, saver, existingFileHelper ->
|
||||
addAdvancements(saver, languageProvider)
|
||||
addAndroidAdvancements(saver, languageProvider)
|
||||
val advancementProvider = object : AdvancementProvider(event.generator, event.existingFileHelper) {
|
||||
override fun registerAdvancements(consumer: Consumer<Advancement>, fileHelper: ExistingFileHelper) {
|
||||
addAdvancements(consumer, languageProvider)
|
||||
addAndroidAdvancements(consumer, languageProvider)
|
||||
}
|
||||
)) {}
|
||||
}
|
||||
|
||||
addTags(tagsProvider)
|
||||
addSuspiciousTags(tagsProvider)
|
||||
addConstructionTags(tagsProvider)
|
||||
addResourceTags(tagsProvider)
|
||||
addEquipmentTags(tagsProvider)
|
||||
addMineableTags(tagsProvider)
|
||||
addDyeTags(tagsProvider)
|
||||
addStructureTags(tagsProvider)
|
||||
|
||||
event.generator.addProvider(event.includeClient(), blockModelProvider)
|
||||
event.generator.addProvider(event.includeServer(), blockStateProvider)
|
||||
event.generator.addProvider(event.includeClient(), itemModelProvider)
|
||||
event.generator.addProvider(event.includeServer(), recipeProvider)
|
||||
DyeColor.entries.forEach { event.generator.addProvider(event.includeClient(), MatterBankProvider(event, it)) }
|
||||
DyeColor.values().forEach { event.generator.addProvider(event.includeClient(), MatterBankProvider(event, it)) }
|
||||
event.generator.addProvider(event.includeClient(), MatterBankProvider(event, null))
|
||||
DyeColor.entries.forEach { event.generator.addProvider(event.includeClient(), BatteryBankProvider(event, it)) }
|
||||
DyeColor.values().forEach { event.generator.addProvider(event.includeClient(), BatteryBankProvider(event, it)) }
|
||||
event.generator.addProvider(event.includeClient(), BatteryBankProvider(event, null))
|
||||
event.generator.addProvider(event.includeServer(), lootTableProvider)
|
||||
event.generator.addProvider(event.includeServer(), lootModifier)
|
||||
@ -555,17 +528,6 @@ object DataGen {
|
||||
event.generator.addProvider(event.includeServer(), researchProvider)
|
||||
event.generator.addProvider(event.includeServer(), advancementProvider)
|
||||
event.generator.addProvider(event.includeServer(), matterData)
|
||||
event.generator.addProvider(event.includeServer(), flywheelData)
|
||||
|
||||
val registrySetBuilder = RegistrySetBuilder()
|
||||
.add(Registries.DAMAGE_TYPE, ::registerDamageTypes)
|
||||
.add(Registries.CONFIGURED_FEATURE, ::registerConfiguredFeatures)
|
||||
.add(Registries.PLACED_FEATURE, ::registerPlacedFeatures)
|
||||
.add(NeoForgeRegistries.Keys.BIOME_MODIFIERS, ::registerBiomeModifiers)
|
||||
|
||||
event.generator.addProvider(event.includeServer(), DatapackBuiltinEntriesProvider(event.generator.packOutput, event.lookupProvider, registrySetBuilder, setOf(MOD_ID)))
|
||||
|
||||
registerDamageTypeTags(tagsProvider.damageTypes)
|
||||
|
||||
AddEnglishLanguage(languageProvider)
|
||||
AddRussianLanguage(languageProvider)
|
||||
@ -575,7 +537,7 @@ object DataGen {
|
||||
|
||||
trapdoor(MBlocks.TRITANIUM_TRAPDOOR[null]!!, modLocation("block/decorative/tritanium_trapdoor"))
|
||||
|
||||
for (color in DyeColor.entries)
|
||||
for (color in DyeColor.values())
|
||||
trapdoor(MBlocks.TRITANIUM_TRAPDOOR[color]!!, modLocation("block/decorative/tritanium_trapdoor_${color.name.lowercase()}"))
|
||||
|
||||
addBlockModels(blockModelProvider)
|
||||
@ -586,11 +548,6 @@ object DataGen {
|
||||
addItemModels(itemModelProvider)
|
||||
blockStateProvider.exec { addComplexBlockStates(blockStateProvider) }
|
||||
addLootTables(lootTableProvider)
|
||||
addMachineLoot(lootTableProvider)
|
||||
addDecorativeLoot(lootTableProvider)
|
||||
addAdvancementLoot(lootTableProvider)
|
||||
addVaultLoot(lootTableProvider)
|
||||
addEntityLoot(lootTableProvider)
|
||||
addChestLootTables(lootTableProvider)
|
||||
|
||||
recipeProvider.exec { _, consumer ->
|
||||
@ -598,7 +555,6 @@ object DataGen {
|
||||
addComponentRecipes(consumer)
|
||||
addStorageItemRecipes(consumer)
|
||||
addCraftingTableRecipes(consumer)
|
||||
addMultiblockRecipes(consumer)
|
||||
addBlastingRecipes(consumer)
|
||||
addDecorativesRecipes(recipeProvider, consumer)
|
||||
addMachineUpgradeRecipes(consumer)
|
||||
@ -606,7 +562,6 @@ object DataGen {
|
||||
addOreSmeltingRecipes(consumer)
|
||||
addPainterRecipes(consumer)
|
||||
addMatterEntanglerRecipes(consumer)
|
||||
addSuspiciousRecipes(consumer)
|
||||
}
|
||||
|
||||
addPlatePressRecipes(recipeProvider)
|
||||
@ -619,7 +574,6 @@ object DataGen {
|
||||
languageProvider.registerProviders()
|
||||
|
||||
addMatterData(matterData)
|
||||
addFlywheelMaterials(flywheelData)
|
||||
|
||||
tagsProvider.register()
|
||||
}
|
||||
|
@ -1,24 +1,23 @@
|
||||
package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.level.block.AnvilBlock
|
||||
import net.minecraft.world.level.block.SlabBlock
|
||||
import net.minecraft.world.level.block.StairBlock
|
||||
import net.minecraft.world.level.block.WallBlock
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||
import net.neoforged.neoforge.client.model.generators.BlockModelBuilder
|
||||
import net.neoforged.neoforge.client.model.generators.ConfiguredModel
|
||||
import net.neoforged.neoforge.client.model.generators.ModelFile
|
||||
import ru.dbotthepony.mc.otm.util.get
|
||||
import ru.dbotthepony.mc.otm.util.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.util.math.xRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import net.minecraftforge.client.model.generators.BlockModelBuilder
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel
|
||||
import net.minecraftforge.client.model.generators.ModelFile
|
||||
import ru.dbotthepony.mc.otm.core.get
|
||||
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.blocks.MatteryBlockStateProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.items.MatteryItemModelProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.models.MatteryBlockModelProvider
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import kotlin.properties.Delegates
|
||||
@ -35,42 +34,22 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
}
|
||||
|
||||
DataGen.decorativeCubeAll(MBlocks.CARBON_FIBRE_BLOCK)
|
||||
DataGen.decorativeCubeAllCutout(MBlocks.METAL_MESH)
|
||||
|
||||
DataGen.decoratives(MRegistry.TRITANIUM_BLOCK)
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
blockModelProvider.exec {
|
||||
blockModelProvider.withExistingParent("block/tritanium_anvil0_${color.name.lowercase()}", "${DataGen.MOD_ID}:block/tritanium_anvil0")
|
||||
.texture("3", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||
.texture("particle", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||
}
|
||||
|
||||
for (i in 1 until MBlocks.TRITANIUM_ANVIL_VARIANTS) {
|
||||
blockModelProvider.exec {
|
||||
blockModelProvider.withExistingParent("block/tritanium_anvil${i}_${color.name.lowercase()}", "${DataGen.MOD_ID}:block/tritanium_anvil$i")
|
||||
.texture("2", modLocation("block/tritanium_anvil_top/${color.name.lowercase()}"))
|
||||
.texture("3", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||
.texture("particle", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (anvils in MBlocks.TRITANIUM_ANVIL.values) {
|
||||
for (anvil in anvils) {
|
||||
blockStateProvider.exec {
|
||||
blockStateProvider.getVariantBuilder(anvil).forAllStates {
|
||||
ConfiguredModel.builder()
|
||||
.modelFile(blockStateProvider.models().getExistingFile(modLocation("block/${anvil.registryName!!.path}")))
|
||||
.rotationY(it[AnvilBlock.FACING].yRotationBlockstateNorth())
|
||||
.build()
|
||||
}
|
||||
for (anvil in MBlocks.TRITANIUM_ANVIL) {
|
||||
blockStateProvider.exec {
|
||||
blockStateProvider.getVariantBuilder(anvil).forAllStates {
|
||||
ConfiguredModel.builder()
|
||||
.modelFile(blockStateProvider.models().getExistingFile(modLocation("block/${anvil.registryName!!.path}")))
|
||||
.rotationY(it[AnvilBlock.FACING].yRotationBlockstateNorth())
|
||||
.build()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for ((color, block) in MRegistry.TRITANIUM_STAIRS.allBlocks) {
|
||||
DataGen.decorativeStairs(block, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path)
|
||||
DataGen.decorativeStairs(block as StairBlock, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path)
|
||||
}
|
||||
|
||||
for ((color, block) in MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks) {
|
||||
@ -98,7 +77,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
for ((color, block) in MRegistry.TRITANIUM_SLAB.allBlocks) {
|
||||
blockStateProvider.exec {
|
||||
blockStateProvider.slabBlock(
|
||||
block,
|
||||
block as SlabBlock,
|
||||
MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!,
|
||||
modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/${MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path}")
|
||||
)
|
||||
@ -108,7 +87,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
for ((color, block) in MRegistry.FLOOR_TILES_SLAB.blocks) {
|
||||
blockStateProvider.exec {
|
||||
blockStateProvider.slabBlock(
|
||||
block,
|
||||
block as SlabBlock,
|
||||
MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!,
|
||||
modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/${MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!.path}")
|
||||
)
|
||||
@ -117,7 +96,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
|
||||
for ((color, block) in MRegistry.FLOOR_TILES_STAIRS.blocks) {
|
||||
DataGen.decorativeStairs(
|
||||
block,
|
||||
block as StairBlock,
|
||||
MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!.path,
|
||||
MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!.path
|
||||
)
|
||||
@ -125,7 +104,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
|
||||
for ((color, block) in MRegistry.TRITANIUM_WALL.allBlocks) {
|
||||
DataGen.decorativeWall(
|
||||
block,
|
||||
block as WallBlock,
|
||||
sideTexture = MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path,
|
||||
topTexture = MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path
|
||||
)
|
||||
@ -166,13 +145,8 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
"1" to "decorative/computer_screen",
|
||||
"particle" to "decorative/computer_base",
|
||||
))
|
||||
blockStateProvider.block(MRegistry.COMPUTER_TERMINAL.allBlocks.values)
|
||||
|
||||
blockModelProvider.colored("star_chair", mapOf(
|
||||
"1" to "decorative/star_chair",
|
||||
"2" to "powered_smoker_base",
|
||||
))
|
||||
blockStateProvider.block(MRegistry.STAR_CHAIR.allBlocks.values)
|
||||
blockStateProvider.block(MRegistry.COMPUTER_TERMINAL.allBlocks.values)
|
||||
|
||||
blockStateProvider.simpleBlockM(MBlocks.FLUID_TANK)
|
||||
|
||||
@ -225,8 +199,8 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
}
|
||||
}
|
||||
|
||||
DataGen.decorativeCubeAll(MBlocks.DANGER_STRIPE_BLOCK)
|
||||
DataGen.decorativePillar(MBlocks.METAL_BEAM, "metal_beam_side", "metal_beam_top")
|
||||
blockModelProvider.decorativeCubeAll(MBlocks.METAL_BEAM_CENTER, "metal_beam_top")
|
||||
|
||||
var labLampOn: BlockModelBuilder? = null
|
||||
var labLampOff: BlockModelBuilder? = null
|
||||
@ -257,12 +231,9 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
|
||||
itemModelProvider.block(MItems.LABORATORY_LAMP)
|
||||
itemModelProvider.block(MItems.LABORATORY_LAMP_INVERTED, MItems.LABORATORY_LAMP.registryName!!.path + "_unlit")
|
||||
itemModelProvider.block(MItems.DANGER_STRIPE_BLOCK, MItems.DANGER_STRIPE_BLOCK.registryName!!.path + "_0")
|
||||
itemModelProvider.block(MItems.DANGER_STRIPE_BLOCK)
|
||||
itemModelProvider.block(MItems.METAL_BEAM)
|
||||
|
||||
blockStateProvider.block(MBlocks.METAL_BEAM_CENTER)
|
||||
itemModelProvider.block(MItems.METAL_BEAM_CENTER)
|
||||
|
||||
blockStateProvider.exec {
|
||||
blockStateProvider.getVariantBuilder(MBlocks.LABORATORY_LAMP).forAllStates {
|
||||
return@forAllStates ConfiguredModel.builder()
|
||||
@ -293,31 +264,17 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
}
|
||||
}
|
||||
|
||||
MBlocks.TRITANIUM_STRIPED_BLOCK.entries.forEach { (c, it) ->
|
||||
DataGen.decorativeColumn(it, "stripe/tritanium_striped_block_${c.name.lowercase()}", "tritanium_block")
|
||||
}
|
||||
|
||||
MBlocks.TRITANIUM_STRIPED_STAIRS.entries.forEach { (c, it) ->
|
||||
DataGen.decorativeStairs(it, "stripe/tritanium_striped_block_${c.name.lowercase()}", "tritanium_block")
|
||||
}
|
||||
|
||||
MBlocks.TRITANIUM_STRIPED_WALL.entries.forEach { (c, it) ->
|
||||
DataGen.decorativeWall(it, "stripe/tritanium_striped_block_${c.name.lowercase()}", "tritanium_block")
|
||||
}
|
||||
|
||||
MBlocks.TRITANIUM_STRIPED_SLAB.entries.forEach { (c, it) ->
|
||||
DataGen.decorativeSlab(it, MBlocks.TRITANIUM_STRIPED_BLOCK[c]!!.registryName!!, "stripe/tritanium_striped_block_${c.name.lowercase()}", "tritanium_block")
|
||||
}
|
||||
|
||||
itemModelProvider.blocks(MItems.TRITANIUM_STRIPED_STAIRS.values)
|
||||
itemModelProvider.blocks(MItems.TRITANIUM_STRIPED_SLAB.values)
|
||||
DataGen.decorativeColumn(MBlocks.TRITANIUM_STRIPED_BLOCK, "tritanium_striped_block", "tritanium_block")
|
||||
DataGen.decorativeStairs(MBlocks.TRITANIUM_STRIPED_STAIRS as StairBlock, "tritanium_striped_block", "tritanium_block")
|
||||
DataGen.decorativeWall(MBlocks.TRITANIUM_STRIPED_WALL as WallBlock, "tritanium_striped_block", "tritanium_block")
|
||||
DataGen.decorativeSlab(MBlocks.TRITANIUM_STRIPED_SLAB as SlabBlock, MBlocks.TRITANIUM_STRIPED_BLOCK.registryName!!, "tritanium_striped_block", "tritanium_block")
|
||||
itemModelProvider.block(MItems.TRITANIUM_STRIPED_STAIRS)
|
||||
itemModelProvider.block(MItems.TRITANIUM_STRIPED_SLAB)
|
||||
|
||||
itemModelProvider.exec {
|
||||
MBlocks.TRITANIUM_STRIPED_WALL.entries.forEach { (c, it) ->
|
||||
itemModelProvider.withExistingParent(it.registryName!!.path, modLocation("block/wall_inventory"))
|
||||
.texture("wall_side", modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/stripe/tritanium_striped_block_${c.name.lowercase()}"))
|
||||
.texture("wall", modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/tritanium_block"))
|
||||
}
|
||||
itemModelProvider.withExistingParent(MItems.TRITANIUM_STRIPED_WALL.registryName!!.path, modLocation("block/wall_inventory"))
|
||||
.texture("wall_side", modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/tritanium_striped_block"))
|
||||
.texture("wall", modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/tritanium_block"))
|
||||
}
|
||||
|
||||
for ((color, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks) {
|
||||
@ -328,7 +285,6 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
||||
}
|
||||
|
||||
DataGen.bars(MBlocks.TRITANIUM_BARS, modLocation("block/decorative/tritanium_bars"))
|
||||
DataGen.bars(MBlocks.METAL_RAILING, modLocation("block/decorative/metal_railing"))
|
||||
|
||||
blockStateProvider.block(MBlocks.ENGINE)
|
||||
itemModelProvider.block(MItems.ENGINE)
|
||||
|
@ -1,15 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.data.FlywheelMaterialDataProvider
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockTags
|
||||
|
||||
fun addFlywheelMaterials(provider: FlywheelMaterialDataProvider) {
|
||||
provider.add(Tags.Blocks.STORAGE_BLOCKS_DIAMOND, Decimal(25_000_000))
|
||||
provider.add(Tags.Blocks.STORAGE_BLOCKS_COPPER, Decimal(60_000_000))
|
||||
provider.add(Tags.Blocks.STORAGE_BLOCKS_IRON, Decimal(50_000_000))
|
||||
provider.add(Tags.Blocks.STORAGE_BLOCKS_GOLD, Decimal(300_000_000), momentumLossSpeed = Decimal("0.75"))
|
||||
provider.add(Tags.Blocks.STORAGE_BLOCKS_NETHERITE, Decimal(1_250_000_000), momentumLossSpeed = Decimal.ONE_HALF)
|
||||
provider.add(MBlockTags.TRITANIUM_BLOCKS, Decimal(225_000_000))
|
||||
}
|
@ -3,11 +3,12 @@ package ru.dbotthepony.mc.otm.datagen
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.Items
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.matter.ComputeAction
|
||||
import ru.dbotthepony.mc.otm.matter.MatterDataProvider
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
// general rule - anything plant or organic is much more complex than mineral
|
||||
// and anything mineral has much bigger matter value than complexity (just throw a lot of same molecules)
|
||||
@ -16,10 +17,8 @@ fun addMatterData(provider: MatterDataProvider) {
|
||||
provider.inherit(Items.CHIPPED_ANVIL, Items.ANVIL, 0.75)
|
||||
provider.inherit(Items.DAMAGED_ANVIL, Items.ANVIL, 0.5)
|
||||
|
||||
for (anvils in MItems.TRITANIUM_ANVIL.values) {
|
||||
for (i in 1 until anvils.size) {
|
||||
provider.inherit(anvils[i], anvils[i - 1], 0.85)
|
||||
}
|
||||
for (i in 1 until MItems.TRITANIUM_ANVIL.size) {
|
||||
provider.inherit(MItems.TRITANIUM_ANVIL[i], MItems.TRITANIUM_ANVIL[i - 1], 0.85)
|
||||
}
|
||||
|
||||
provider.inherit(Items.WATER_BUCKET, Items.BUCKET) {
|
||||
@ -153,12 +152,12 @@ fun addMatterData(provider: MatterDataProvider) {
|
||||
relative(Items.PACKED_ICE, 1.5, 1)
|
||||
|
||||
// rocks
|
||||
scope(Tags.Items.STONES, 1.1, 1.1) {
|
||||
equal(Tags.Items.COBBLESTONES)
|
||||
equal(Tags.Items.GRAVELS)
|
||||
scope(Tags.Items.STONE, 1.1, 1.1) {
|
||||
equal(Tags.Items.COBBLESTONE)
|
||||
equal(Tags.Items.GRAVEL)
|
||||
equal(Items.FLINT)
|
||||
equal(Tags.Items.SANDS)
|
||||
equal(Tags.Items.NETHERRACKS)
|
||||
equal(Tags.Items.SAND)
|
||||
equal(Tags.Items.NETHERRACK)
|
||||
|
||||
scope(1.4, 1.5) {
|
||||
equal(Items.BASALT)
|
||||
@ -186,7 +185,7 @@ fun addMatterData(provider: MatterDataProvider) {
|
||||
relative(Items.REINFORCED_DEEPSLATE, 3, 1.4)
|
||||
}
|
||||
|
||||
relative(Tags.Items.OBSIDIANS, 10, 1.5)
|
||||
relative(Tags.Items.OBSIDIAN, 10, 1.5)
|
||||
relative(Items.CRYING_OBSIDIAN, 14, 3)
|
||||
}
|
||||
|
||||
@ -222,7 +221,7 @@ fun addMatterData(provider: MatterDataProvider) {
|
||||
// drops from mobs
|
||||
scope(Items.ROTTEN_FLESH, 8, 1.5) {
|
||||
equal(Items.INK_SAC)
|
||||
equal(Tags.Items.LEATHERS)
|
||||
equal(Tags.Items.LEATHER)
|
||||
equal(Items.LEATHER)
|
||||
|
||||
relative(Items.RABBIT_FOOT, 1.1, 1.5)
|
||||
@ -232,15 +231,14 @@ fun addMatterData(provider: MatterDataProvider) {
|
||||
|
||||
relative(Tags.Items.BONES, 1, 1.25)
|
||||
|
||||
relative(Tags.Items.STRINGS, 0.8, 0.75)
|
||||
relative(Tags.Items.STRING, 0.8, 0.75)
|
||||
relative(Items.COBWEB, 0.8, 0.75)
|
||||
relative(Items.SPIDER_EYE, 0.8, 1.8)
|
||||
|
||||
relative(Tags.Items.SLIME_BALLS, 1, 1.4)
|
||||
relative(Tags.Items.GUNPOWDERS, 0.85, 1.15)
|
||||
relative(Tags.Items.SLIMEBALLS, 1, 1.4)
|
||||
relative(Tags.Items.GUNPOWDER, 0.85, 1.15)
|
||||
|
||||
relative(Items.TURTLE_SCUTE, 1, 1.5)
|
||||
relative(Items.ARMADILLO_SCUTE, 1, 1.8)
|
||||
relative(Items.SCUTE, 1, 1.5)
|
||||
relative(Items.FEATHER, 0.7, 1.25)
|
||||
relative(Items.EGG, 1.25, 4)
|
||||
|
||||
@ -263,7 +261,7 @@ fun addMatterData(provider: MatterDataProvider) {
|
||||
relative(Items.SCULK_VEIN, 2.5, 24)
|
||||
|
||||
// planty
|
||||
scope(Items.SHORT_GRASS, 1.5, 2.5) {
|
||||
scope(Items.GRASS, 1.5, 2.5) {
|
||||
equal(Items.SUNFLOWER)
|
||||
equal(Items.LILAC)
|
||||
equal(Items.ROSE_BUSH)
|
||||
@ -437,6 +435,4 @@ fun addMatterData(provider: MatterDataProvider) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider.inherit(MItems.IMPERFECT_BREAD, Items.BREAD, 1.5)
|
||||
}
|
||||
|
@ -2,18 +2,18 @@ package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.item.Items
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.player.android.AndroidResearchDescriptions
|
||||
import ru.dbotthepony.mc.otm.player.android.AndroidResearchResults
|
||||
import ru.dbotthepony.mc.otm.player.android.AndroidResearchType
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchDescriptions
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchResults
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchType
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.util.TextComponent
|
||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
|
||||
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import java.util.LinkedList
|
||||
import java.util.function.Consumer
|
||||
|
@ -1,68 +1,44 @@
|
||||
package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.sounds.SoundEvent
|
||||
import net.neoforged.neoforge.common.data.SoundDefinition
|
||||
import net.neoforged.neoforge.common.data.SoundDefinitionsProvider
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.registry.game.MSoundEvents
|
||||
import net.minecraftforge.common.data.SoundDefinition
|
||||
import net.minecraftforge.common.data.SoundDefinitionsProvider
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.registry.MSoundEvents
|
||||
|
||||
fun SoundDefinition.subtitle(value: SoundEvent): SoundDefinition {
|
||||
return subtitle("otm.sound." + value.location.path)
|
||||
}
|
||||
|
||||
class SoundDataProvider(event: GatherDataEvent) : SoundDefinitionsProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
class SoundDataProvider(event: GatherDataEvent) : SoundDefinitionsProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
override fun registerSounds() {
|
||||
add(
|
||||
MSoundEvents.PLASMA_WEAPON_OVERHEAT,
|
||||
add(MSoundEvents.PLASMA_WEAPON_OVERHEAT,
|
||||
definition().subtitle("otm.sound.plasma_weapon_overheat")
|
||||
.with(SoundDefinition.Sound.sound(modLocation("item/plasma_weapon_overheat"), SoundDefinition.SoundType.SOUND)))
|
||||
|
||||
add(
|
||||
MSoundEvents.PLAYER_BECOME_ANDROID,
|
||||
add(MSoundEvents.PLAYER_BECOME_ANDROID,
|
||||
definition().subtitle("otm.sound.player_become_android")
|
||||
.with(SoundDefinition.Sound.sound(modLocation("player_become_android"), SoundDefinition.SoundType.SOUND)))
|
||||
|
||||
add(
|
||||
MSoundEvents.RIFLE_SHOT,
|
||||
add(MSoundEvents.RIFLE_SHOT,
|
||||
definition().subtitle("otm.sound.rifle_shot")
|
||||
.with(SoundDefinition.Sound.sound(modLocation("item/rifle_shot"), SoundDefinition.SoundType.SOUND)))
|
||||
|
||||
simple(MSoundEvents.CARGO_CRATE_OPEN)
|
||||
|
||||
add(
|
||||
MSoundEvents.ANDROID_JUMP_BOOST,
|
||||
add(MSoundEvents.ANDROID_JUMP_BOOST,
|
||||
definition().subtitle("otm.sound.android.jump_boost")
|
||||
.with(SoundDefinition.Sound.sound(modLocation("android/jump_boost"), SoundDefinition.SoundType.SOUND)))
|
||||
|
||||
add(
|
||||
MSoundEvents.ANDROID_SHOCKWAVE,
|
||||
add(MSoundEvents.ANDROID_SHOCKWAVE,
|
||||
definition().subtitle("otm.sound.android.shockwave")
|
||||
.with(SoundDefinition.Sound.sound(modLocation("android/shockwave"), SoundDefinition.SoundType.SOUND)))
|
||||
|
||||
add(
|
||||
MSoundEvents.BLACK_HOLE,
|
||||
definition().subtitle("otm.sound.black_hole")
|
||||
.with(SoundDefinition.Sound.sound(modLocation("singularity/amb_singularity"), SoundDefinition.SoundType.SOUND)
|
||||
.attenuationDistance(32)
|
||||
.stream()
|
||||
))
|
||||
|
||||
add(
|
||||
MSoundEvents.LOADER_AMBIENT,
|
||||
definition().subtitle("otm.sound.entity.loader.loader_ambient")
|
||||
.with(
|
||||
SoundDefinition.Sound.sound(modLocation("entity/loader/loader_ambient"), SoundDefinition.SoundType.SOUND)
|
||||
.attenuationDistance(32)
|
||||
.stream(),
|
||||
SoundDefinition.Sound.sound(modLocation("entity/loader/loader_ambient2"), SoundDefinition.SoundType.SOUND)
|
||||
.attenuationDistance(32)
|
||||
.stream()
|
||||
))
|
||||
|
||||
add(
|
||||
MSoundEvents.ANDROID_PROJ_PARRY,
|
||||
add(MSoundEvents.ANDROID_PROJ_PARRY,
|
||||
definition().subtitle("otm.sound.android.projectile_parry")
|
||||
.with(SoundDefinition.Sound.sound(modLocation("android/punch_projectile"), SoundDefinition.SoundType.SOUND)))
|
||||
.with(SoundDefinition.Sound.sound(modLocation("android/punch_projectile"), SoundDefinition.SoundType.SOUND))
|
||||
)
|
||||
}
|
||||
|
||||
private inline fun add(value: SoundEvent, block: SoundDefinition.() -> Unit) {
|
||||
|
@ -1,199 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.core.HolderSet
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.data.worldgen.BootstrapContext
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.tags.BiomeTags
|
||||
import net.minecraft.tags.BlockTags
|
||||
import net.minecraft.util.valueproviders.ClampedNormalFloat
|
||||
import net.minecraft.util.valueproviders.ClampedNormalInt
|
||||
import net.minecraft.util.valueproviders.ConstantFloat
|
||||
import net.minecraft.util.valueproviders.UniformInt
|
||||
import net.minecraft.world.level.levelgen.GenerationStep
|
||||
import net.minecraft.world.level.levelgen.VerticalAnchor
|
||||
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature
|
||||
import net.minecraft.world.level.levelgen.feature.Feature
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration
|
||||
import net.minecraft.world.level.levelgen.heightproviders.VeryBiasedToBottomHeight
|
||||
import net.minecraft.world.level.levelgen.placement.CountPlacement
|
||||
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.placement.RarityFilter
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest
|
||||
import net.neoforged.neoforge.common.world.BiomeModifier
|
||||
import net.neoforged.neoforge.registries.NeoForgeRegistries
|
||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.data.world.EllipsoidPlacement
|
||||
import ru.dbotthepony.mc.otm.data.world.StandardDeviationHeightProvider
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.data.MWorldGenFeatures
|
||||
import ru.dbotthepony.mc.otm.server.world.feature.BlackHolePlacerFeature
|
||||
|
||||
private object ConfiguredFeatures {
|
||||
val TRITANIUM_ORE = key("tritanium_ore")
|
||||
val DILITHIUM = key("dilithium")
|
||||
val BLACK_HOLE = key("black_hole")
|
||||
|
||||
private fun key(name: String): ResourceKey<ConfiguredFeature<*, *>> {
|
||||
return ResourceKey.create(Registries.CONFIGURED_FEATURE, modLocation(name))
|
||||
}
|
||||
}
|
||||
|
||||
fun registerConfiguredFeatures(context: BootstrapContext<ConfiguredFeature<*, *>>) {
|
||||
val stone = TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES)
|
||||
val deepslate = TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES)
|
||||
|
||||
run {
|
||||
val target = listOf(
|
||||
OreConfiguration.target(stone, MBlocks.TRITANIUM_ORE.defaultBlockState()),
|
||||
OreConfiguration.target(deepslate, MBlocks.DEEPSLATE_TRITANIUM_ORE.defaultBlockState()),
|
||||
)
|
||||
|
||||
context.register(ConfiguredFeatures.TRITANIUM_ORE, ConfiguredFeature(Feature.ORE, OreConfiguration(target, 9)))
|
||||
}
|
||||
|
||||
run {
|
||||
val target = listOf(
|
||||
OreConfiguration.target(stone, MBlocks.DILITHIUM_ORE.defaultBlockState()),
|
||||
OreConfiguration.target(deepslate, MBlocks.DEEPSLATE_DILITHIUM_ORE.defaultBlockState()),
|
||||
)
|
||||
|
||||
context.register(ConfiguredFeatures.DILITHIUM, ConfiguredFeature(Feature.ORE, OreConfiguration(target, 3)))
|
||||
}
|
||||
|
||||
context.register(ConfiguredFeatures.BLACK_HOLE, ConfiguredFeature(
|
||||
MWorldGenFeatures.BLACK_HOLE_PLACER,
|
||||
BlackHolePlacerFeature.Config(Decimal("0.25"), Decimal(1))))
|
||||
}
|
||||
|
||||
private object PlacedFeatures {
|
||||
val NORMAL_TRITANIUM = key("normal_tritanium")
|
||||
val DEEP_TRITANIUM = key("deep_tritanium")
|
||||
val CLOUD_TITANIUM = key("cloud_tritanium")
|
||||
val DILITHIUM = key("dilithium")
|
||||
val BLACK_HOLE = key("black_hole")
|
||||
|
||||
private fun key(name: String): ResourceKey<PlacedFeature> {
|
||||
return ResourceKey.create(Registries.PLACED_FEATURE, modLocation(name))
|
||||
}
|
||||
}
|
||||
|
||||
fun registerPlacedFeatures(context: BootstrapContext<PlacedFeature>) {
|
||||
val configured = context.lookup(Registries.CONFIGURED_FEATURE)
|
||||
|
||||
run {
|
||||
val ore = configured.getOrThrow(ConfiguredFeatures.TRITANIUM_ORE)
|
||||
|
||||
context.register(PlacedFeatures.NORMAL_TRITANIUM, PlacedFeature(
|
||||
ore,
|
||||
listOf(
|
||||
CountPlacement.of(UniformInt.of(2, 6)),
|
||||
InSquarePlacement.spread(),
|
||||
HeightRangePlacement.of(StandardDeviationHeightProvider(VerticalAnchor.absolute(10), 15.0))
|
||||
)
|
||||
))
|
||||
|
||||
context.register(PlacedFeatures.DEEP_TRITANIUM, PlacedFeature(
|
||||
ore,
|
||||
listOf(
|
||||
CountPlacement.of(UniformInt.of(4, 8)),
|
||||
InSquarePlacement.spread(),
|
||||
HeightRangePlacement.of(VeryBiasedToBottomHeight.of(VerticalAnchor.aboveBottom(4), VerticalAnchor.absolute(0), 16))
|
||||
)
|
||||
))
|
||||
|
||||
context.register(PlacedFeatures.CLOUD_TITANIUM, PlacedFeature(
|
||||
ore,
|
||||
listOf(
|
||||
RarityFilter.onAverageOnceEvery(16),
|
||||
InSquarePlacement.spread(),
|
||||
HeightRangePlacement.of(StandardDeviationHeightProvider(VerticalAnchor.absolute(10), 15.0)),
|
||||
EllipsoidPlacement(
|
||||
x = ClampedNormalInt.of(0f, 6f, Int.MIN_VALUE, Int.MAX_VALUE),
|
||||
y = ClampedNormalInt.of(0f, 12f, Int.MIN_VALUE, Int.MAX_VALUE),
|
||||
z = ClampedNormalInt.of(0f, 6f, Int.MIN_VALUE, Int.MAX_VALUE),
|
||||
count = ClampedNormalInt.of(60f, 60f, 40, 160),
|
||||
xLength = ClampedNormalFloat.of(11f, 4f, 6f, 14f),
|
||||
yLength = ClampedNormalFloat.of(11f, 4f, 6f, 14f),
|
||||
zLength = ClampedNormalFloat.of(11f, 4f, 6f, 14f),
|
||||
)
|
||||
)
|
||||
))
|
||||
}
|
||||
|
||||
run {
|
||||
val ore = configured.getOrThrow(ConfiguredFeatures.DILITHIUM)
|
||||
|
||||
context.register(PlacedFeatures.DILITHIUM, PlacedFeature(
|
||||
ore,
|
||||
listOf(
|
||||
RarityFilter.onAverageOnceEvery(12),
|
||||
InSquarePlacement.spread(),
|
||||
HeightRangePlacement.of(StandardDeviationHeightProvider(VerticalAnchor.absolute(0), 15.0)),
|
||||
EllipsoidPlacement(
|
||||
x = ClampedNormalInt.of(0f, 8f, Int.MIN_VALUE, Int.MAX_VALUE),
|
||||
y = ClampedNormalInt.of(0f, 20f, Int.MIN_VALUE, Int.MAX_VALUE),
|
||||
z = ClampedNormalInt.of(0f, 8f, Int.MIN_VALUE, Int.MAX_VALUE),
|
||||
count = ClampedNormalInt.of(200f, 200f, 200, 600),
|
||||
xLength = ClampedNormalFloat.of(11f, 4f, 8f, 14f),
|
||||
// allow crystals to generate as far as standard deviation allows
|
||||
// to increase chance for player to discover crystal vein
|
||||
yLength = ConstantFloat.of(60f),
|
||||
zLength = ClampedNormalFloat.of(11f, 4f, 8f, 14f),
|
||||
)
|
||||
)
|
||||
))
|
||||
}
|
||||
|
||||
val blackHole = configured.getOrThrow(ConfiguredFeatures.BLACK_HOLE)
|
||||
|
||||
context.register(PlacedFeatures.BLACK_HOLE, PlacedFeature(
|
||||
blackHole,
|
||||
listOf(
|
||||
RarityFilter.onAverageOnceEvery(1000),
|
||||
InSquarePlacement.spread(),
|
||||
HeightRangePlacement.uniform(VerticalAnchor.absolute(64), VerticalAnchor.absolute(128))
|
||||
)
|
||||
))
|
||||
}
|
||||
|
||||
private object BiomeModifiers {
|
||||
val ORES = key("ores")
|
||||
val BLACK_HOLE = key("black_hole")
|
||||
|
||||
private fun key(name: String): ResourceKey<BiomeModifier> {
|
||||
return ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, modLocation(name))
|
||||
}
|
||||
}
|
||||
|
||||
fun registerBiomeModifiers(context: BootstrapContext<BiomeModifier>) {
|
||||
val placed = context.lookup(Registries.PLACED_FEATURE)
|
||||
val biomes = context.lookup(Registries.BIOME)
|
||||
|
||||
context.register(
|
||||
BiomeModifiers.ORES,
|
||||
net.neoforged.neoforge.common.world.BiomeModifiers.AddFeaturesBiomeModifier(
|
||||
biomes.getOrThrow(BiomeTags.IS_OVERWORLD),
|
||||
HolderSet.direct(
|
||||
placed.getOrThrow(PlacedFeatures.NORMAL_TRITANIUM),
|
||||
placed.getOrThrow(PlacedFeatures.DEEP_TRITANIUM),
|
||||
placed.getOrThrow(PlacedFeatures.CLOUD_TITANIUM),
|
||||
placed.getOrThrow(PlacedFeatures.DILITHIUM),
|
||||
),
|
||||
GenerationStep.Decoration.UNDERGROUND_ORES
|
||||
)
|
||||
)
|
||||
|
||||
context.register(
|
||||
BiomeModifiers.BLACK_HOLE,
|
||||
net.neoforged.neoforge.common.world.BiomeModifiers.AddFeaturesBiomeModifier(
|
||||
biomes.getOrThrow(BiomeTags.IS_OVERWORLD),
|
||||
HolderSet.direct(
|
||||
placed.getOrThrow(PlacedFeatures.BLACK_HOLE)
|
||||
),
|
||||
GenerationStep.Decoration.SURFACE_STRUCTURES
|
||||
)
|
||||
)
|
||||
}
|
@ -1,22 +1,23 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||
|
||||
import net.minecraft.advancements.AdvancementHolder
|
||||
import net.minecraft.advancements.AdvancementRewards
|
||||
import net.minecraft.advancements.AdvancementRequirements.Strategy
|
||||
import net.minecraft.advancements.AdvancementType
|
||||
import net.minecraft.advancements.FrameType
|
||||
import net.minecraft.advancements.RequirementsStrategy
|
||||
import net.minecraft.advancements.critereon.InventoryChangeTrigger
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import ru.dbotthepony.mc.otm.server.triggers.BlackHoleTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.NailedEntityTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.BlackHoleTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.NailedEntityTrigger
|
||||
import java.util.function.Consumer
|
||||
|
||||
typealias Strategy = RequirementsStrategy
|
||||
|
||||
fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLanguageProvider) {
|
||||
val translation = lang.MultiBuilder("otm.advancements.regular")
|
||||
|
||||
@ -105,7 +106,7 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("energy_sword.desc", "Wield a High-Frequency Blade, a melee weapon intended to slice Creepers into creep-cakes") {
|
||||
russian("Получите высокочастотный клинок, оружие ближнего боя предназначенное для нарезания Криперов на крипо-тортики")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("has_item", criterion(MItems.ENERGY_SWORD))
|
||||
.save(serializer, modLocation("regular/energy_sword"))
|
||||
@ -120,7 +121,7 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("quantum_battery.desc", "Put together a Quantum Battery, powered by Ender technologies") {
|
||||
russian("Создайте квантовый аккумулятор, пропитанную технологиями Края")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.rewards(AdvancementRewards.Builder.experience(50))
|
||||
.requirements(Strategy.OR)
|
||||
@ -138,7 +139,7 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("zpm_battery.desc", "Find Zero Point Module, something from different multiverse of ours, created using technologies lost in time in all possible multiverses") {
|
||||
russian("Найдите модуль нулевой точки, вещь из другой мультивселенной, созданная с использованием технологий, потерянных во времени во всех возможных мультивслеленных")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE,
|
||||
frameType = FrameType.CHALLENGE,
|
||||
hidden = true
|
||||
)
|
||||
.rewards(AdvancementRewards.Builder.experience(800))
|
||||
@ -330,12 +331,10 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
}
|
||||
.save(serializer, modLocation("regular/industrial_glass"))
|
||||
|
||||
CraftEntry(
|
||||
MItems.FLUID_TANK, "Liquid Packaging",
|
||||
CraftEntry(MItems.FLUID_TANK, "Liquid Packaging",
|
||||
russianName = "Упаковка для жидкостей").make(serializer, glass, translation)
|
||||
|
||||
CraftEntry(
|
||||
MItems.FLUID_CAPSULE, "Liquid Canning",
|
||||
CraftEntry(MItems.FLUID_CAPSULE, "Liquid Canning",
|
||||
russianName = "Банка для жидкостей").make(serializer, glass, translation)
|
||||
|
||||
AdvancementBuilder()
|
||||
@ -348,7 +347,7 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("industrial_glass2.desc", "Paint Industrial Glass all possible colors") {
|
||||
russian("Покрасьте промышленное стекло во все возможные цвета")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.requirements(Strategy.AND)
|
||||
.also { advancement ->
|
||||
@ -400,7 +399,7 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("cargo_crate_minecart2.desc", "Have all color variants of Minecarts with Cargo Crates") {
|
||||
russian("Создайте все варианты покрасок вагонеток с грузовыми Ящиками")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.requirements(Strategy.AND)
|
||||
.also { advancement ->
|
||||
@ -418,7 +417,7 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("cargo_crate2.desc", "Craft all color variants of Cargo Crates") {
|
||||
russian("Покрасьте грузовые ящики во все возможные цвета")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.requirements(Strategy.AND)
|
||||
.also { advancement ->
|
||||
@ -443,15 +442,15 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
MRegistry.TRITANIUM_STRIPED_BLOCK.flatItems.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MRegistry.TRITANIUM_STAIRS.allItems.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MRegistry.TRITANIUM_STRIPED_STAIRS.flatItems.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_BLOCK.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_STAIRS.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_BLOCK.also { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_STAIRS.also { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
}
|
||||
.save(serializer, modLocation("regular/tritanium_block"))
|
||||
|
||||
AdvancementBuilder()
|
||||
.parent(tritaniumBlock)
|
||||
.display(
|
||||
itemStack = ItemStack(MItems.TRITANIUM_STRIPED_BLOCK[DyeColor.YELLOW]!!),
|
||||
itemStack = ItemStack(MItems.TRITANIUM_STRIPED_BLOCK),
|
||||
title = translation.add("striped_tritanium_block", "Old Fashion Color Touch") {
|
||||
russian("Старомодная цветовая отделка")
|
||||
},
|
||||
@ -460,10 +459,10 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
}
|
||||
)
|
||||
.requirements(Strategy.OR)
|
||||
.addCriterion("has_item", criterion(MItems.TRITANIUM_STRIPED_BLOCK[DyeColor.YELLOW]!!))
|
||||
.addCriterion("has_item1", criterion(MItems.TRITANIUM_STRIPED_STAIRS[DyeColor.YELLOW]!!))
|
||||
.addCriterion("has_item2", criterion(MItems.TRITANIUM_STRIPED_SLAB[DyeColor.YELLOW]!!))
|
||||
.addCriterion("has_item3", criterion(MItems.TRITANIUM_STRIPED_WALL[DyeColor.YELLOW]!!))
|
||||
.addCriterion("has_item", criterion(MItems.TRITANIUM_STRIPED_BLOCK))
|
||||
.addCriterion("has_item1", criterion(MItems.TRITANIUM_STRIPED_STAIRS))
|
||||
.addCriterion("has_item2", criterion(MItems.TRITANIUM_STRIPED_SLAB))
|
||||
.addCriterion("has_item3", criterion(MItems.TRITANIUM_STRIPED_WALL))
|
||||
.save(serializer, modLocation("regular/striped_tritanium_block"))
|
||||
|
||||
val colorTritaniumBlock = AdvancementBuilder()
|
||||
@ -483,8 +482,8 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
MRegistry.TRITANIUM_STAIRS.items.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MRegistry.TRITANIUM_STRIPED_BLOCK.flatItems.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MRegistry.TRITANIUM_STRIPED_STAIRS.flatItems.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_BLOCK.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_STAIRS.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_BLOCK.also { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_STAIRS.also { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
}
|
||||
.save(serializer, modLocation("regular/tritanium_block2"))
|
||||
|
||||
@ -498,9 +497,9 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("tritanium_block3.desc", "Craft all color variants of Tritanium Blocks") {
|
||||
russian("Создайте все варианты покрасок тритановых Блоков")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.rewards(advancementLoot("tritanium_block3").addExperience(100))
|
||||
.rewards(AdvancementRewards.Builder.loot(modLocation("tritanium_block3")).addExperience(100))
|
||||
.requirements(Strategy.AND)
|
||||
.also { advancement ->
|
||||
MRegistry.TRITANIUM_BLOCK.items.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
@ -517,14 +516,14 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("tritanium_block4.desc", "Craft ALL color variants of Tritanium Blocks including striped ones") {
|
||||
russian("Создайте АБСОЛЮТНО ВСЕ варианты покрасок тритановых блоков, включая с полосками")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE
|
||||
frameType = FrameType.CHALLENGE
|
||||
)
|
||||
.rewards(advancementLoot("tritanium_block4").addExperience(400))
|
||||
.rewards(AdvancementRewards.Builder.loot(modLocation("tritanium_block4")).addExperience(400))
|
||||
.requirements(Strategy.AND)
|
||||
.also { advancement ->
|
||||
MRegistry.TRITANIUM_BLOCK.items.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MRegistry.TRITANIUM_STRIPED_BLOCK.flatItems.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_BLOCK.values.forEach { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
MItems.TRITANIUM_STRIPED_BLOCK.also { advancement.addCriterion(it.registryName!!.path, criterion(it)) }
|
||||
}
|
||||
.save(serializer, modLocation("regular/tritanium_block4"))
|
||||
|
||||
@ -540,10 +539,10 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
},
|
||||
)
|
||||
.requirements(Strategy.OR)
|
||||
.also {
|
||||
for ((i, item) in MItems.PILLS.withIndex())
|
||||
it.addCriterion("pill$i", criterion(item))
|
||||
}
|
||||
.addCriterion("pill1", criterion(MItems.PILL_ANDROID))
|
||||
.addCriterion("pill2", criterion(MItems.PILL_HEAL))
|
||||
.addCriterion("pill3", criterion(MItems.PILL_HUMANE))
|
||||
.addCriterion("pill4", criterion(MItems.PILL_OBLIVION))
|
||||
.save(serializer, modLocation("regular/pill"))
|
||||
|
||||
AdvancementBuilder()
|
||||
@ -556,15 +555,15 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
description = translation.add("all_pills.desc", "Find all possible pill types") {
|
||||
russian("Найдите всевозможные варианты пилюль")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE,
|
||||
frameType = FrameType.CHALLENGE,
|
||||
hidden = true
|
||||
)
|
||||
.rewards(AdvancementRewards.Builder.experience(200))
|
||||
.requirements(Strategy.AND)
|
||||
.also {
|
||||
for ((i, item) in MItems.PILLS.withIndex())
|
||||
it.addCriterion("pill$i", criterion(item))
|
||||
}
|
||||
.addCriterion("pill1", criterion(MItems.PILL_ANDROID))
|
||||
.addCriterion("pill2", criterion(MItems.PILL_HEAL))
|
||||
.addCriterion("pill3", criterion(MItems.PILL_HUMANE))
|
||||
.addCriterion("pill4", criterion(MItems.PILL_OBLIVION))
|
||||
.save(serializer, modLocation("regular/all_pills"))
|
||||
|
||||
val essenceCapsule = AdvancementBuilder()
|
||||
@ -597,7 +596,6 @@ fun addAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLangua
|
||||
.addCriterion("damage", NailedEntityTrigger.Instance().criterion())
|
||||
.save(serializer, modLocation("regular/explosive_hammer"))
|
||||
|
||||
CraftEntry(
|
||||
MItems.ESSENCE_STORAGE.values, "Did not Forget to Remember",
|
||||
russianName = "Не забыл запомнить").make(serializer, essenceCapsule, translation)
|
||||
CraftEntry(MItems.ESSENCE_STORAGE.values, "Did not Forget to Remember",
|
||||
russianName = "Не забыл запомнить").make(serializer, essenceCapsule, translation)
|
||||
}
|
||||
|
@ -1,9 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||
|
||||
import net.minecraft.advancements.AdvancementHolder
|
||||
import net.minecraft.advancements.AdvancementRequirements.Strategy
|
||||
import net.minecraft.advancements.AdvancementRewards
|
||||
import net.minecraft.advancements.AdvancementType
|
||||
import net.minecraft.advancements.FrameType
|
||||
import net.minecraft.advancements.critereon.EntityPredicate
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.advancements.critereon.MinMaxBounds.Doubles
|
||||
@ -13,22 +11,22 @@ import net.minecraft.world.item.Items
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.server.triggers.AndroidBatteryTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.AndroidResearchTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.AndroidTravelUnderwater
|
||||
import ru.dbotthepony.mc.otm.server.triggers.BecomeAndroidDeathTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.BecomeAndroidSleepTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.BecomeAndroidTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.BecomeHumaneTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.EnderTeleporterFallDeathTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.FallDampenersSaveTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.KillAsAndroidTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.NanobotsArmorTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ShockwaveDamageMobTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ShockwaveTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.AndroidBatteryTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.AndroidResearchTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.AndroidTravelUnderwater
|
||||
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidDeathTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidSleepTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.BecomeHumaneTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.EnderTeleporterFallDeathTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.FallDampenersSaveTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.KillAsAndroidTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.NanobotsArmorTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ShockwaveDamageMobTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ShockwaveTrigger
|
||||
import java.util.*
|
||||
import java.util.function.Consumer
|
||||
|
||||
@ -62,7 +60,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
russian("Используйте модуль нулевой точки как внутренний источник питания. Теперь только вечность будет вашим злейшим врагом")
|
||||
},
|
||||
hidden = true,
|
||||
frameType = AdvancementType.CHALLENGE
|
||||
frameType = FrameType.CHALLENGE
|
||||
)
|
||||
.addCriterion("item", AndroidBatteryTrigger.Instance(ItemPredicate.Builder.item().of(MItems.ZPM_BATTERY).build()).criterion())
|
||||
.save(serializer, modLocation("android/zpm"))
|
||||
@ -78,7 +76,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
russian("Используйте Квантовый Аккумулятор как внутренний источник питания, можно даже подключить другой конец к Реактору Распада")
|
||||
},
|
||||
hidden = true,
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.requirements(Strategy.OR)
|
||||
.addCriterion("item0", AndroidBatteryTrigger.Instance(ItemPredicate.Builder.item().of(MItems.QUANTUM_BATTERY).build()).criterion())
|
||||
@ -126,7 +124,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
russian("Вновь обретите плоть после своей жизни как набор гаек и болтов, но вот чего-то всё равно не хватает, что было при вас с самого начала...")
|
||||
},
|
||||
hidden = true,
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("become_humane", BecomeHumaneTrigger.criterion)
|
||||
.save(serializer, modLocation("android/become_humane"))
|
||||
@ -213,7 +211,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
russian("Дайте наноботам поглотить 5 сердец урона, не отключившись насовсем")
|
||||
},
|
||||
hidden = true,
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("damage", NanobotsArmorTrigger.Instance(Doubles.atLeast(10.0)).criterion())
|
||||
.save(serializer, modLocation("android/nanobots_armor_deflect"))
|
||||
@ -229,7 +227,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
russian("Дайте наноботам поглотить 10 сердец урона, не отключившись насовсем")
|
||||
},
|
||||
hidden = true,
|
||||
frameType = AdvancementType.CHALLENGE
|
||||
frameType = FrameType.CHALLENGE
|
||||
)
|
||||
.addCriterion("damage", NanobotsArmorTrigger.Instance(Doubles.atLeast(20.0)).criterion())
|
||||
.save(serializer, modLocation("android/nanobots_armor_deflect2"))
|
||||
@ -244,7 +242,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("fall_dampeners_save.desc", "Survive fall that would have otherwise be fatal without Fall Dampeners") {
|
||||
russian("Выживите после падения, которое было бы фатальным без поглотителей инерции")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("saved", FallDampenersSaveTrigger.criterion)
|
||||
.save(serializer, modLocation("android/fall_dampeners_save"))
|
||||
@ -259,7 +257,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("ender_teleport_fall_death.desc", "Fall to your demise moments after Teleporting as Android") {
|
||||
russian("Разбейтесь насмерть через мгновения после телепортации за андроида")
|
||||
},
|
||||
frameType = AdvancementType.GOAL,
|
||||
frameType = FrameType.GOAL,
|
||||
hidden = true
|
||||
)
|
||||
.addCriterion("death", EnderTeleporterFallDeathTrigger.criterion)
|
||||
@ -289,7 +287,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("regen_all.desc", "Max out Nanobots Regeneration research") {
|
||||
russian("Полностью исследуйте регенерацию наноботов за андроида")
|
||||
},
|
||||
frameType = AdvancementType.GOAL,
|
||||
frameType = FrameType.GOAL,
|
||||
)
|
||||
.addCriterion("regen0", AndroidResearchTrigger.Instance(modLocation(MNames.NANOBOTS_REGENERATION_1)).criterion())
|
||||
.addCriterion("regen1", AndroidResearchTrigger.Instance(modLocation(MNames.NANOBOTS_REGENERATION_2)).criterion())
|
||||
@ -307,7 +305,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("research_all.desc", "Research everything as Android (that don't block or get blocked by any other research)") {
|
||||
russian("Исследуйте все технологии за андроида (которые не блокируют и не блокируются другими технологиями)")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE
|
||||
frameType = FrameType.CHALLENGE
|
||||
)
|
||||
.rewards(AdvancementRewards.Builder.experience(400).addLootTable(modLocation("research_all_android")))
|
||||
.also { advancement ->
|
||||
@ -343,7 +341,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("shockwave_warden.desc", "Hurt Warden using Shockwave ability") {
|
||||
russian("Нанесите хранителю урон используя ударную волну")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("shockwave_warden", ShockwaveDamageMobTrigger.Instance(Optional.of(EntityPredicate.Builder.entity().of(EntityType.WARDEN).build().wrap())).criterion())
|
||||
.save(serializer, modLocation("android/shockwave_warden"))
|
||||
@ -358,7 +356,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("wither.desc", "Defeat The Wither as Android. The Wither was surely confused over kind of thing you are") {
|
||||
russian("Победите Иссушителя будучи андроидом. Наверняка Иссушитель был ошеломлён таким раскладом дел")
|
||||
},
|
||||
frameType = AdvancementType.GOAL,
|
||||
frameType = FrameType.GOAL,
|
||||
hidden = true
|
||||
)
|
||||
.addCriterion("kill_wither", KillAsAndroidTrigger.Instance(
|
||||
@ -376,7 +374,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("travel_underwater.desc", "Travel at least 200 meters underwater as Android without Air Bags research. This reminds us of someone...") {
|
||||
russian("Преодолейте как минимум 200 метров под водой будучи андроидом без исследования воздушных мешков. Кого-то это нам напоминает...")
|
||||
},
|
||||
frameType = AdvancementType.GOAL,
|
||||
frameType = FrameType.GOAL,
|
||||
hidden = true
|
||||
)
|
||||
.addCriterion("travel", AndroidTravelUnderwater.Instance(200.0).criterion())
|
||||
@ -392,7 +390,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("travel_underwater2.desc", "Travel at least 1046 meters underwater as Android without Air Bags research, like someone else did so") {
|
||||
russian("Преодолейте как минимум 1046 метров под водой будучи андроидом без исследования воздушных мешков, прям как тот, кто так однажды так и сделал")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE,
|
||||
frameType = FrameType.CHALLENGE,
|
||||
hidden = true
|
||||
)
|
||||
.addCriterion("travel", AndroidTravelUnderwater.Instance(1046.0).criterion())
|
||||
@ -408,7 +406,7 @@ fun addAndroidAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("elder_guardian.desc", "Slay Elder Guardian as Android without Air Bags researched") {
|
||||
russian("Победите Древнего стража будучи андроидом без исследования воздушных мешков")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE,
|
||||
frameType = FrameType.CHALLENGE,
|
||||
hidden = true
|
||||
)
|
||||
.addCriterion("kill_elder_guardian", KillAsAndroidTrigger.Instance(
|
||||
|
@ -1,19 +1,18 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||
|
||||
import net.minecraft.advancements.AdvancementHolder
|
||||
import net.minecraft.advancements.AdvancementType
|
||||
import net.minecraft.advancements.FrameType
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ExopackBatterySlotTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ExopackGainedCraftingTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ExopackGainedEnderAccessTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ExopackGainedSmeltingTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ExopackObtainedTrigger
|
||||
import ru.dbotthepony.mc.otm.server.triggers.ExopackSlotsExpandedTrigger
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackBatterySlotTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedCraftingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedEnderAccessTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedSmeltingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackObtainedTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackSlotsExpandedTrigger
|
||||
import java.util.function.Consumer
|
||||
|
||||
fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: MatteryLanguageProvider, root: AdvancementHolder, zpm: AdvancementHolder) {
|
||||
@ -30,7 +29,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("zpm_battery.desc", "Use Zero Point Module as power source in Exopack") {
|
||||
russian("Используйте модуль нулевой точки как источник питания в Экзопаке")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("zpm_battery", ExopackBatterySlotTrigger.Instance(ItemPredicate.Builder.item().of(MItems.ZPM_BATTERY).build()).criterion())
|
||||
.save(serializer, modLocation("exopack/zpm_battery"))
|
||||
@ -45,7 +44,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("obtained.desc", "Obtain an Exopack, a mysterious, semi-present, light as a feather, stuff storage on your back") {
|
||||
russian("Получите Экзопак, загадочное, полу-присутствующее, лёгкое как пёрышко, хранилище штуковин на вашей спине")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("obtained", ExopackObtainedTrigger.criterion)
|
||||
.save(serializer, modLocation("exopack/obtained"))
|
||||
@ -148,7 +147,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("size3.desc", "Reach 108 slots in your Exopack storage") {
|
||||
russian("Достигните 108 слотов хранилища Экзопака")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("size3", ExopackSlotsExpandedTrigger.Instance(minTotal = 108).criterion())
|
||||
.save(serializer, modLocation("exopack/size3"))
|
||||
@ -164,7 +163,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("size4.desc", "Reach 432 slots in your Exopack storage. You could fit a house in there") {
|
||||
russian("Достигните 432 слотов хранилища Экзопака. Туда можно уже впихнуть целый дом")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE
|
||||
frameType = FrameType.CHALLENGE
|
||||
)
|
||||
.addCriterion("size4", ExopackSlotsExpandedTrigger.Instance(minTotal = 432).criterion())
|
||||
.save(serializer, modLocation("exopack/size4"))
|
||||
@ -180,7 +179,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("size5.desc", "Reach 1728 slots in your Exopack storage. Why would you need to go any bigger?!") {
|
||||
russian("Достигните 1728 слотов хранилища Экзопака. Куда вам столько?!")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE
|
||||
frameType = FrameType.CHALLENGE
|
||||
)
|
||||
.addCriterion("size5", ExopackSlotsExpandedTrigger.Instance(minTotal = 1728).criterion())
|
||||
.save(serializer, modLocation("exopack/size5"))
|
||||
@ -224,7 +223,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("once2.desc", "Upgrade your Exopack storage with 54 slots using one module") {
|
||||
russian("Улучшите хранилище Экзопака модулем на 54 слотов")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("once2", ExopackSlotsExpandedTrigger.Instance(minGained = 54).criterion())
|
||||
.save(serializer, modLocation("exopack/once2"))
|
||||
@ -240,7 +239,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("once3.desc", "Upgrade your Exopack storage with 90 slots using one module") {
|
||||
russian("Улучшите хранилище Экзопака модулем на 90 слотов")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("once3", ExopackSlotsExpandedTrigger.Instance(minGained = 90).criterion())
|
||||
.save(serializer, modLocation("exopack/once3"))
|
||||
@ -256,7 +255,7 @@ fun addExopackAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("once4.desc", "Upgrade your Exopack storage with 150 slots using one module. After you open one, tens meters long racks roll out of it!") {
|
||||
russian("Улучшите хранилище Экзопака модулем на 150 слотов. Открой один - и покатились стеллажи на десятки метров!")
|
||||
},
|
||||
frameType = AdvancementType.CHALLENGE
|
||||
frameType = FrameType.CHALLENGE
|
||||
)
|
||||
.addCriterion("once4", ExopackSlotsExpandedTrigger.Instance(minGained = 150).criterion())
|
||||
.save(serializer, modLocation("exopack/once4"))
|
||||
|
@ -1,53 +1,29 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||
|
||||
import net.minecraft.advancements.Advancement
|
||||
import net.minecraft.advancements.AdvancementHolder
|
||||
import net.minecraft.advancements.AdvancementRewards
|
||||
import net.minecraft.advancements.AdvancementType
|
||||
import net.minecraft.advancements.Criterion
|
||||
import net.minecraft.advancements.CriterionTriggerInstance
|
||||
import net.minecraft.advancements.DisplayInfo
|
||||
import net.minecraft.advancements.critereon.ContextAwarePredicate
|
||||
import net.minecraft.advancements.FrameType
|
||||
import net.minecraft.advancements.critereon.EntityPredicate
|
||||
import net.minecraft.advancements.critereon.InventoryChangeTrigger
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.tags.TagKey
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import ru.dbotthepony.mc.otm.util.TextComponent
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||
import java.util.function.Consumer
|
||||
|
||||
fun AdvancementBuilder(): Advancement.Builder = Advancement.Builder.advancement()
|
||||
|
||||
fun Advancement.Builder.save(serializer: Consumer<AdvancementHolder>, name: ResourceLocation): AdvancementHolder {
|
||||
val built = build(name)
|
||||
serializer.accept(built)
|
||||
return built
|
||||
}
|
||||
|
||||
fun advancementLoot(location: ResourceLocation): AdvancementRewards.Builder {
|
||||
return AdvancementRewards.Builder.loot(ResourceKey.create(Registries.LOOT_TABLE, location))
|
||||
}
|
||||
|
||||
fun advancementLoot(location: String): AdvancementRewards.Builder {
|
||||
return advancementLoot(modLocation(location))
|
||||
}
|
||||
|
||||
fun AdvancementRewards.Builder.addLootTable(location: ResourceLocation): AdvancementRewards.Builder {
|
||||
return addLootTable(ResourceKey.create(Registries.LOOT_TABLE, location))
|
||||
}
|
||||
|
||||
fun DisplayInfo(
|
||||
itemStack: ItemStack,
|
||||
title: Component = TextComponent("undefined"),
|
||||
description: Component = TextComponent("undefined"),
|
||||
background: ResourceLocation? = null,
|
||||
frameType: AdvancementType = AdvancementType.TASK,
|
||||
frameType: FrameType = FrameType.TASK,
|
||||
showToast: Boolean = true,
|
||||
announceChat: Boolean = true,
|
||||
hidden: Boolean = false,
|
||||
@ -71,7 +47,7 @@ fun Advancement.Builder.display(
|
||||
title: Component = TextComponent("undefined"),
|
||||
description: Component = TextComponent("undefined"),
|
||||
background: ResourceLocation? = null,
|
||||
frameType: AdvancementType = AdvancementType.TASK,
|
||||
frameType: FrameType = FrameType.TASK,
|
||||
showToast: Boolean = true,
|
||||
announceChat: Boolean = true,
|
||||
hidden: Boolean = false,
|
||||
@ -81,7 +57,7 @@ fun predicate(tag: TagKey<Item>): ItemPredicate {
|
||||
return ItemPredicate.Builder.item().of(tag).build()
|
||||
}
|
||||
|
||||
fun criterion(tag: TagKey<Item>): Criterion<*> {
|
||||
fun criterion(tag: TagKey<Item>): CriterionTriggerInstance {
|
||||
return InventoryChangeTrigger.TriggerInstance.hasItems(predicate(tag))
|
||||
}
|
||||
|
||||
@ -89,8 +65,10 @@ fun predicate(item: ItemLike): ItemPredicate {
|
||||
return ItemPredicate.Builder.item().of(item).build()
|
||||
}
|
||||
|
||||
fun criterion(item: ItemLike): Criterion<*> {
|
||||
fun criterion(item: ItemLike): CriterionTriggerInstance {
|
||||
return InventoryChangeTrigger.TriggerInstance.hasItems(predicate(item))
|
||||
}
|
||||
|
||||
fun EntityPredicate.wrap(): ContextAwarePredicate = EntityPredicate.wrap(this)
|
||||
fun EntityPredicate.wrap(): EntityPredicate.Composite = EntityPredicate.Composite.wrap(this)
|
||||
|
||||
fun Advancement.Builder.save(advancement: Consumer<Advancement>, name: ResourceLocation) = save(advancement, name.toString())
|
||||
|
@ -1,21 +1,23 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||
|
||||
import net.minecraft.advancements.AdvancementHolder
|
||||
import net.minecraft.advancements.AdvancementRequirements
|
||||
import net.minecraft.advancements.AdvancementType
|
||||
import net.minecraft.advancements.Advancement
|
||||
import net.minecraft.advancements.FrameType
|
||||
import net.minecraft.advancements.RequirementsStrategy
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.util.key
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.key
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.server.triggers.TakeItemOutOfReplicatorTrigger
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.triggers.TakeItemOutOfReplicatorTrigger
|
||||
import java.util.function.Consumer
|
||||
|
||||
typealias AdvancementHolder = Advancement
|
||||
|
||||
data class CraftEntry(
|
||||
val item: Collection<Item>,
|
||||
val englishName: String,
|
||||
@ -59,7 +61,7 @@ data class CraftEntry(
|
||||
it.addCriterion(i.toString(), criterion(item))
|
||||
}
|
||||
}
|
||||
.requirements(AdvancementRequirements.Strategy.OR)
|
||||
.requirements(RequirementsStrategy.OR)
|
||||
.save(serializer, modLocation("machines/$path"))
|
||||
}
|
||||
}
|
||||
@ -82,7 +84,7 @@ fun addMachineAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
for ((i, v) in MItems.CHEMICAL_GENERATOR.values.withIndex())
|
||||
it.addCriterion("has_machine_$i", criterion(v))
|
||||
}
|
||||
.requirements(AdvancementRequirements.Strategy.OR)
|
||||
.requirements(RequirementsStrategy.OR)
|
||||
.save(serializer, modLocation("machines/chemical_generator"))
|
||||
|
||||
val press = AdvancementBuilder()
|
||||
@ -100,48 +102,36 @@ fun addMachineAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
for ((i, m) in MItems.TWIN_PLATE_PRESS.values.withIndex())
|
||||
it.addCriterion(i.toString(), criterion(m))
|
||||
}
|
||||
.requirements(AdvancementRequirements.Strategy.OR)
|
||||
.requirements(RequirementsStrategy.OR)
|
||||
.save(serializer, modLocation("machines/plate_press"))
|
||||
|
||||
CraftEntry(
|
||||
MItems.ENERGY_SERVO.values, "Power Goes In, Powered Things Go Out",
|
||||
CraftEntry(MItems.ENERGY_SERVO.values, "Power Goes In, Powered Things Go Out",
|
||||
russianName = "Энергия на вход, электроинструмент на выход").make(serializer, press, translation)
|
||||
|
||||
val scanner = CraftEntry(
|
||||
MItems.MATTER_SCANNER.values, "Scanning Things that Matter",
|
||||
val scanner = CraftEntry(MItems.MATTER_SCANNER.values, "Scanning Things that Matter",
|
||||
russianName = "Сканируем вещи которые материальны")
|
||||
val decomposer = CraftEntry(
|
||||
MItems.MATTER_DECOMPOSER.values, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times",
|
||||
val decomposer = CraftEntry(MItems.MATTER_DECOMPOSER.values, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times",
|
||||
russianName = "Разлагаем атомы", russianSuffix = "Во всех ситуациях держите свои конечности вне рабочей камеры")
|
||||
val panel = CraftEntry(
|
||||
MItems.MATTER_PANEL.values, "Indexing the Library",
|
||||
val panel = CraftEntry(MItems.MATTER_PANEL.values, "Indexing the Library",
|
||||
russianName = "Индексируем библиотеку")
|
||||
val replicator = CraftEntry(
|
||||
MItems.MATTER_REPLICATOR.values, "Cook with (Im)Perfection", "Now let's bake some perfect bread",
|
||||
val replicator = CraftEntry(MItems.MATTER_REPLICATOR.values, "Cook with (Im)Perfection", "Now let's bake some perfect bread",
|
||||
russianName = "Повар с (не) идеальностями", russianSuffix = "А теперь давайте выпечем немного идеального хлеба")
|
||||
val bottler = CraftEntry(
|
||||
MItems.MATTER_BOTTLER.values, "Transfusing Pure Matter", "For those who loved to play with water in their childhood",
|
||||
val bottler = CraftEntry(MItems.MATTER_BOTTLER.values, "Transfusing Pure Matter", "For those who loved to play with water in their childhood",
|
||||
russianName = "Переливаем чистую материю", russianSuffix = "Для тех, кто любил играться в воде в детстве")
|
||||
val recycler = CraftEntry(
|
||||
MItems.MATTER_RECYCLER.values, "Refine and Redefine", "This is what waste recycling should look like",
|
||||
val recycler = CraftEntry(MItems.MATTER_RECYCLER.values, "Refine and Redefine", "This is what waste recycling should look like",
|
||||
russianName = "Переработка и перегонка", russianSuffix = "Вот он, пик переработки отходов")
|
||||
val capacitor = CraftEntry(
|
||||
MItems.MATTER_CAPACITOR_BANK.values, "Modular Matter Tank",
|
||||
val capacitor = CraftEntry(MItems.MATTER_CAPACITOR_BANK.values, "Modular Matter Tank",
|
||||
russianName = "Модульный бак материи")
|
||||
|
||||
val counter = CraftEntry(
|
||||
MItems.ENERGY_COUNTER.values, "Visualize Power Burn",
|
||||
val counter = CraftEntry(MItems.ENERGY_COUNTER.values, "Visualize Power Burn",
|
||||
russianName = "Визуализация сжигания энергии")
|
||||
val battery = CraftEntry(
|
||||
MItems.BATTERY_BANK.values, "Batteries Not Included", "By all means avoid the urge to hammer incompatible batteries into the power bus.",
|
||||
val battery = CraftEntry(MItems.BATTERY_BANK.values, "Batteries Not Included", "By all means avoid the urge to hammer incompatible batteries into the power bus.",
|
||||
russianName = "Батарейки в комплект не входят", russianSuffix = "Пожалуйста, воздержитесь от вбивания кувалдой несовместимых батарей в энергетическую шину.")
|
||||
|
||||
val pattern = CraftEntry(
|
||||
MItems.PATTERN_STORAGE, "Digital Knowledge Library",
|
||||
val pattern = CraftEntry(MItems.PATTERN_STORAGE, "Digital Knowledge Library",
|
||||
russianName = "Цифровая библиотека знаний")
|
||||
|
||||
val reconstructor = CraftEntry(
|
||||
MItems.MATTER_RECONSTRUCTOR.values, "Flipping Hourglass",
|
||||
val reconstructor = CraftEntry(MItems.MATTER_RECONSTRUCTOR.values, "Flipping Hourglass",
|
||||
russianName = "Переворачиваем песочные часы")
|
||||
|
||||
decomposer.make(serializer, press, translation).also {
|
||||
@ -160,10 +150,9 @@ fun addMachineAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
description = translation.add("replicate_something.desc", "Replicate something using Matter Replicator. If you replicated some food, be first to taste it among your company") {
|
||||
russian("Среплицируйте что либо используя репликатор материи. Если это еда, то не стесняйтесь быть первым, кто попробует её на вкус среди вашей компании")
|
||||
},
|
||||
frameType = AdvancementType.GOAL
|
||||
frameType = FrameType.GOAL
|
||||
)
|
||||
.addCriterion("replicate_something", TakeItemOutOfReplicatorTrigger.Instance(ItemPredicate.Builder.item().of(
|
||||
MItems.MATTER_DUST).build(), true).criterion())
|
||||
.addCriterion("replicate_something", TakeItemOutOfReplicatorTrigger.Instance(ItemPredicate.Builder.item().of(MItems.MATTER_DUST).build(), true).criterion())
|
||||
.save(serializer, modLocation("machines/replicate_something"))
|
||||
|
||||
AdvancementBuilder()
|
||||
@ -178,8 +167,7 @@ fun addMachineAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
russian("Наблюдайте неудачный результат репликации, где ваш заказ рассыпался в материальную труху")
|
||||
},
|
||||
)
|
||||
.addCriterion("replicate_failure", TakeItemOutOfReplicatorTrigger.Instance(ItemPredicate.Builder.item().of(
|
||||
MItems.MATTER_DUST).build()).criterion())
|
||||
.addCriterion("replicate_failure", TakeItemOutOfReplicatorTrigger.Instance(ItemPredicate.Builder.item().of(MItems.MATTER_DUST).build()).criterion())
|
||||
.save(serializer, modLocation("machines/replicate_failure"))
|
||||
}
|
||||
|
||||
@ -195,48 +183,33 @@ fun addMachineAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
|
||||
battery.make(serializer, it, translation)
|
||||
}
|
||||
|
||||
val station = CraftEntry(
|
||||
MItems.ANDROID_STATION.values, "Android Home Page",
|
||||
val station = CraftEntry(MItems.ANDROID_STATION.values, "Android Home Page",
|
||||
russianName = "Домашняя страница андроидов",
|
||||
russianSuffix = "Только пользоваться этим устройством могут вёдра с болтами",
|
||||
englishSuffix = "Except only buckets of bolts can use this thing")
|
||||
|
||||
val charger = CraftEntry(
|
||||
MItems.ANDROID_CHARGER.values, "Android Home Router",
|
||||
val charger = CraftEntry(MItems.ANDROID_CHARGER.values, "Android Home Router",
|
||||
russianName = "Домашняя страница андроидов")
|
||||
|
||||
station.make(serializer, press, translation).also {
|
||||
charger.make(serializer, it, translation)
|
||||
}
|
||||
|
||||
CraftEntry(
|
||||
MItems.COBBLESTONE_GENERATOR.values, "Cobblestone: Infinity + 1",
|
||||
CraftEntry(MItems.COBBLESTONE_GENERATOR.values, "Cobblestone: Infinity + 1",
|
||||
russianName = "Булыжник: бесконечность + 1",
|
||||
russianSuffix = "Смотрите, чтоб он не просыпался во все сундуки",
|
||||
englishSuffix = "Watch for not to spill it over all your chests").make(serializer, press, translation)
|
||||
|
||||
.also {
|
||||
CraftEntry(
|
||||
MItems.INFINITE_WATER_SOURCE, "We Got A Leak!",
|
||||
russianName = "У нас утечка!",
|
||||
russianSuffix = "Как это вообще возможно!?",
|
||||
englishSuffix = "How is that even possible!?")
|
||||
.make(serializer, it, translation)
|
||||
}
|
||||
|
||||
CraftEntry(
|
||||
MItems.POWERED_FURNACE.values, "One Big Resistor",
|
||||
russianName = "Один большой резистор",
|
||||
russianSuffix = "Каждый элемент электрической цепи способен испускать свет и тепло, единожды.",
|
||||
englishSuffix = "Any electrical element can emit light and heat, once.")
|
||||
CraftEntry(MItems.POWERED_FURNACE.values, "One Big Resistor",
|
||||
russianName = "Один большой резистор",
|
||||
russianSuffix = "Каждый элемент электрической цепи способен испускать свет и тепло, единожды.",
|
||||
englishSuffix = "Any electrical element can emit light and heat, once.")
|
||||
.make(serializer, press, translation)
|
||||
.also {
|
||||
CraftEntry(
|
||||
MItems.POWERED_BLAST_FURNACE.values, "Big Microwave Oven",
|
||||
russianName = "Большая микроволновая печь").make(serializer, it, translation)
|
||||
CraftEntry(MItems.POWERED_BLAST_FURNACE.values, "Big Microwave Oven",
|
||||
russianName = "Большая микроволновая печь").make(serializer, it, translation)
|
||||
|
||||
CraftEntry(
|
||||
MItems.POWERED_SMOKER.values, "Small Microwave Oven",
|
||||
russianName = "Маленькая микроволновая печь").make(serializer, it, translation)
|
||||
CraftEntry(MItems.POWERED_SMOKER.values, "Small Microwave Oven",
|
||||
russianName = "Маленькая микроволновая печь").make(serializer, it, translation)
|
||||
}
|
||||
}
|
||||
|
@ -2,15 +2,15 @@ package ru.dbotthepony.mc.otm.datagen.blocks
|
||||
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.neoforged.neoforge.client.model.generators.BlockStateProvider
|
||||
import net.neoforged.neoforge.client.model.generators.ConfiguredModel
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.util.get
|
||||
import ru.dbotthepony.mc.otm.util.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.util.math.yRotationBlockstateNorth
|
||||
import net.minecraftforge.client.model.generators.BlockStateProvider
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.core.get
|
||||
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
|
||||
private fun nothingOrNumber(input: Int): String {
|
||||
if (input == 0)
|
||||
@ -19,7 +19,7 @@ private fun nothingOrNumber(input: Int): String {
|
||||
return (input - 1).toString()
|
||||
}
|
||||
|
||||
open class BatteryBankProvider(event: GatherDataEvent, val color: DyeColor?) : BlockStateProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
open class BatteryBankProvider(event: GatherDataEvent, val color: DyeColor?) : BlockStateProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
protected var block = "battery_bank"
|
||||
protected var batteryPath = "block/battery/battery"
|
||||
protected var registry: Block = MBlocks.BATTERY_BANK[color]!!
|
||||
|
@ -1,8 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.blocks
|
||||
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.datagen.models.MatteryBlockModelProvider
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
|
||||
fun addBlockModels(provider: MatteryBlockModelProvider) {
|
||||
with(provider) {
|
||||
@ -11,45 +10,10 @@ fun addBlockModels(provider: MatteryBlockModelProvider) {
|
||||
resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE)
|
||||
resourceCubeAll(MBlocks.TRITANIUM_INGOT_BLOCK)
|
||||
|
||||
resourceCubeAll(MBlocks.WITHERED_STEEL_BLOCK)
|
||||
|
||||
resourceCubeAll(MBlocks.DILITHIUM_ORE)
|
||||
resourceCubeAll(MBlocks.DEEPSLATE_DILITHIUM_ORE)
|
||||
resourceCubeAll(MBlocks.DILITHIUM_CRYSTAL_BLOCK)
|
||||
|
||||
provider.exec {
|
||||
provider.cubeAll("reinforced_redstone_lamp", modLocation("block/reinforced_redstone_lamp"))
|
||||
provider.cubeAll("reinforced_redstone_lamp_on", modLocation("block/reinforced_redstone_lamp_on"))
|
||||
}
|
||||
|
||||
cubeAll(MBlocks.FLYWHEEL_HOUSING)
|
||||
column(MBlocks.FLYWHEEL_BEARING, "block/flywheel_bearing","block/flywheel_bearing_top")
|
||||
column(MBlocks.FLYWHEEL_SHAFT, "block/flywheel_shaft","block/flywheel_shaft_top")
|
||||
orientable(MBlocks.FLYWHEEL_BATTERY,"block/flywheel_housing","block/flywheel_controller")
|
||||
|
||||
column(MBlocks.GENERATOR_BLOCK, "block/generator_block","block/generator_block_top")
|
||||
cubeAllFramed("modular_frame", "block/modular_frame")
|
||||
cubeAllFramed("heavy_modular_frame", "block/heavy_modular_frame")
|
||||
|
||||
cubeAll(MBlocks.ENERGY_INPUT_INTERFACE)
|
||||
cubeAll(MBlocks.ENERGY_OUTPUT_INTERFACE)
|
||||
|
||||
cubeAll(MBlocks.TRITANIUM_HULL)
|
||||
|
||||
orientable(MBlocks.MATTER_INPUT_HATCH,"block/tritanium_hull","block/matter_input_hatch")
|
||||
orientable(MBlocks.MATTER_OUTPUT_HATCH,"block/tritanium_hull","block/matter_output_hatch")
|
||||
|
||||
orientable(MBlocks.ENERGY_INPUT_HATCH,"block/tritanium_hull","block/energy_input_hatch")
|
||||
orientable(MBlocks.ENERGY_OUTPUT_HATCH,"block/tritanium_hull","block/energy_output_hatch")
|
||||
|
||||
orientable(MBlocks.ITEM_INPUT_HATCH,"block/tritanium_hull","block/item_input_hatch")
|
||||
orientable(MBlocks.ITEM_OUTPUT_HATCH,"block/tritanium_hull","block/item_output_hatch")
|
||||
|
||||
cable("crude_energy_cable", "block/power_cable_0", powered = true)
|
||||
cable("regular_energy_cable", "block/power_cable_1", powered = true)
|
||||
cable("advanced_energy_cable", "block/power_cable_2", powered = true)
|
||||
cable("superconductor_energy_cable", "block/power_cable_3", powered = true)
|
||||
cable("matter_cable", "block/matter_cable", thin = true)
|
||||
cable("crude_energy_cable", "block/power_cable_0")
|
||||
cable("regular_energy_cable", "block/power_cable_1")
|
||||
cable("advanced_energy_cable", "block/power_cable_2")
|
||||
cable("superconductor_energy_cable", "block/power_cable_3")
|
||||
cable("storage_cable", "block/storage_cable")
|
||||
|
||||
colored(MBlocks.COBBLESTONE_GENERATOR, listOf("0", "particle"))
|
||||
@ -84,8 +48,8 @@ fun addBlockModels(provider: MatteryBlockModelProvider) {
|
||||
coloredMachineCombined("matter_decomposer", listOf("texture", "particle"))
|
||||
coloredMachineCombined("matter_recycler", listOf("0", "particle"))
|
||||
|
||||
colored("matter_replicator", "_idle", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator"))
|
||||
colored("matter_replicator", "_error", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator"))
|
||||
colored("matter_replicator", "_idle", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator_offline"))
|
||||
colored("matter_replicator", "_error", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator_halted"))
|
||||
colored("matter_replicator", "_working", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator"))
|
||||
|
||||
colored("powered_smoker", "_idle", mapOf("0" to "powered_smoker_base", "1" to "powered_smoker_interior_0", "particle" to "powered_smoker_base"))
|
||||
|
@ -2,26 +2,23 @@ package ru.dbotthepony.mc.otm.datagen.blocks
|
||||
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf
|
||||
import net.neoforged.neoforge.client.model.generators.ConfiguredModel
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel
|
||||
import ru.dbotthepony.mc.otm.block.CableBlock
|
||||
import ru.dbotthepony.mc.otm.block.decorative.CargoCrateBlock
|
||||
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
||||
import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock
|
||||
import ru.dbotthepony.mc.otm.block.tech.AndroidChargerBlock
|
||||
import ru.dbotthepony.mc.otm.block.tech.EssenceStorageBlock
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.util.get
|
||||
import ru.dbotthepony.mc.otm.util.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.util.math.xRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.math.xRotationBlockstateSouth
|
||||
import ru.dbotthepony.mc.otm.util.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.math.yRotationBlockstateSouth
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateSouth
|
||||
import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateSouth
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MNames
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import java.util.ArrayList
|
||||
|
||||
fun addBlockStates(provider: MatteryBlockStateProvider) {
|
||||
provider.block(MBlocks.BLACK_HOLE)
|
||||
@ -31,24 +28,7 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
|
||||
provider.ore(MBlocks.TRITANIUM_ORE)
|
||||
provider.ore(MBlocks.TRITANIUM_RAW_BLOCK)
|
||||
provider.block(MBlocks.TRITANIUM_INGOT_BLOCK)
|
||||
|
||||
provider.block(MBlocks.WITHERED_STEEL_BLOCK)
|
||||
provider.exec {
|
||||
provider.getVariantBuilder(MBlocks.ROFLITE_ALLOY_BLOCK).forAllStates {
|
||||
val side1 = modLocation("block/resource/roflite_alloy_1")
|
||||
val side2 = modLocation("block/resource/roflite_alloy_2")
|
||||
val top = modLocation("block/resource/roflite_alloy_top")
|
||||
|
||||
val a = provider.models().cube(MBlocks.ROFLITE_ALLOY_BLOCK.registryName!!.path, top, top, side1, side1, side2, side2).texture("particle", side1)
|
||||
val b = provider.models().cube("${MBlocks.ROFLITE_ALLOY_BLOCK.registryName!!.path}_b", top, top, side2, side2, side1, side1).texture("particle", side2)
|
||||
|
||||
return@forAllStates arrayOf(ConfiguredModel.builder().modelFile(a).buildLast(), ConfiguredModel.builder().modelFile(b).buildLast())
|
||||
}
|
||||
}
|
||||
|
||||
provider.ore(MBlocks.DILITHIUM_ORE)
|
||||
provider.ore(MBlocks.DEEPSLATE_DILITHIUM_ORE)
|
||||
provider.block(MBlocks.DILITHIUM_CRYSTAL_BLOCK)
|
||||
provider.block(MBlocks.METAL_MESH)
|
||||
|
||||
provider.block(MBlocks.CHEMICAL_GENERATOR.values)
|
||||
provider.block(MBlocks.MATTER_SCANNER.values)
|
||||
@ -118,7 +98,6 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
|
||||
|
||||
provider.block(MBlocks.MATTER_DECOMPOSER.values)
|
||||
provider.block(MBlocks.MATTER_REPLICATOR.values)
|
||||
provider.block(MBlocks.MATTER_ENTANGLER)
|
||||
provider.block(MBlocks.PLATE_PRESS.values)
|
||||
provider.block(MBlocks.TWIN_PLATE_PRESS.values)
|
||||
provider.block(MBlocks.GRAVITATION_STABILIZER)
|
||||
@ -135,34 +114,9 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
|
||||
provider.block(MBlocks.ENERGY_SERVO.values)
|
||||
provider.block(MBlocks.COBBLESTONE_GENERATOR.values)
|
||||
|
||||
provider.block(MBlocks.DRIVE_RACK)
|
||||
|
||||
provider.block(MBlocks.PAINTER)
|
||||
provider.block(MBlocks.INFINITE_WATER_SOURCE)
|
||||
|
||||
provider.exec {
|
||||
provider.getVariantBuilder(MBlocks.REDSTONE_LAMP_INVERTED)
|
||||
.forAllStates {
|
||||
ConfiguredModel.builder()
|
||||
.modelFile(provider.models().getExistingFile(ResourceLocation("minecraft", "redstone_lamp${if (it[BlockStateProperties.LIT]) "" else "_on"}")))
|
||||
.build()
|
||||
}
|
||||
|
||||
provider.getVariantBuilder(MBlocks.REINFORCED_REDSTONE_LAMP)
|
||||
.forAllStates {
|
||||
ConfiguredModel.builder()
|
||||
.modelFile(provider.models().getExistingFile(modLocation("reinforced_redstone_lamp${if (it[BlockStateProperties.LIT]) "_on" else ""}")))
|
||||
.build()
|
||||
}
|
||||
|
||||
provider.getVariantBuilder(MBlocks.REINFORCED_REDSTONE_LAMP_INVERTED)
|
||||
.forAllStates {
|
||||
ConfiguredModel.builder()
|
||||
.modelFile(provider.models().getExistingFile(modLocation("reinforced_redstone_lamp${if (it[BlockStateProperties.LIT]) "" else "_on"}")))
|
||||
.build()
|
||||
}
|
||||
}
|
||||
|
||||
provider.exec {
|
||||
for (block in MBlocks.ESSENCE_STORAGE.values) {
|
||||
provider.getVariantBuilder(block).forAllStates {
|
||||
@ -293,84 +247,12 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
|
||||
.rotationY(dir.front.yRotationBlockstateSouth())
|
||||
.addModel()
|
||||
.condition(CableBlock.MAPPING_CONNECTION_PROP[dir.front]!!, true)
|
||||
.condition(BlockStateProperties.POWERED, false)
|
||||
.end()
|
||||
|
||||
part().modelFile(provider.models().getExistingFile(modLocation("${block.value.registryName!!.path}_connection_powered")))
|
||||
.rotationX(dir.front.xRotationBlockstateSouth())
|
||||
.rotationY(dir.front.yRotationBlockstateSouth())
|
||||
.addModel()
|
||||
.condition(CableBlock.MAPPING_CONNECTION_PROP[dir.front]!!, true)
|
||||
.condition(BlockStateProperties.POWERED, true)
|
||||
.end()
|
||||
}
|
||||
|
||||
part().modelFile(provider.models().getExistingFile(modLocation("${block.value.registryName!!.path}_core")))
|
||||
.addModel().condition(BlockStateProperties.POWERED, false).end()
|
||||
part().modelFile(provider.models().getExistingFile(modLocation("${block.value.registryName!!.path}_core_powered")))
|
||||
.addModel().condition(BlockStateProperties.POWERED, true).end()
|
||||
.addModel().end()
|
||||
}
|
||||
}
|
||||
|
||||
provider.getVariantBuilder(MBlocks.METAL_JUNK).forAllStates {
|
||||
val generated = ArrayList<ConfiguredModel>()
|
||||
|
||||
for (suffix in arrayOf("_a", "_b", "_c", "_d")) {
|
||||
val model = provider.models().cubeAll("block/metal_junk$suffix", modLocation("block/decorative/metal_junk$suffix"))
|
||||
|
||||
generated.add(with(ConfiguredModel.builder()) {
|
||||
modelFile(model)
|
||||
|
||||
return@with buildLast()
|
||||
})
|
||||
|
||||
generated.add(with(ConfiguredModel.builder()) {
|
||||
modelFile(model)
|
||||
rotationY(180)
|
||||
|
||||
return@with buildLast()
|
||||
})
|
||||
}
|
||||
|
||||
return@forAllStates generated.toTypedArray()
|
||||
}
|
||||
|
||||
provider.getVariantBuilder(MBlocks.DANGER_STRIPE_BLOCK).forAllStates {
|
||||
val generated = ArrayList<ConfiguredModel>()
|
||||
|
||||
for (suffix in arrayOf("_0", "_1")) {
|
||||
generated.add(with(ConfiguredModel.builder()) {
|
||||
modelFile(provider.models().cubeAll("block/danger_stripe_block$suffix", modLocation("block/decorative/danger_stripe_block$suffix")))
|
||||
|
||||
return@with buildLast()
|
||||
})
|
||||
}
|
||||
|
||||
return@forAllStates generated.toTypedArray()
|
||||
}
|
||||
}
|
||||
|
||||
provider.block(MBlocks.TRITANIUM_HULL)
|
||||
|
||||
provider.block(MBlocks.FLYWHEEL_HOUSING)
|
||||
provider.block(MBlocks.FLYWHEEL_BEARING)
|
||||
provider.block(MBlocks.FLYWHEEL_SHAFT)
|
||||
provider.block(MBlocks.FLYWHEEL_BATTERY)
|
||||
|
||||
provider.block(MBlocks.GENERATOR_BLOCK)
|
||||
provider.block(MBlocks.MODULAR_FRAME)
|
||||
provider.block(MBlocks.HEAVY_MODULAR_FRAME)
|
||||
|
||||
provider.block(MBlocks.ENERGY_INPUT_INTERFACE)
|
||||
provider.block(MBlocks.ENERGY_OUTPUT_INTERFACE)
|
||||
|
||||
provider.block(MBlocks.ENERGY_INPUT_HATCH)
|
||||
provider.block(MBlocks.ENERGY_OUTPUT_HATCH)
|
||||
|
||||
provider.block(MBlocks.MATTER_INPUT_HATCH)
|
||||
provider.block(MBlocks.MATTER_OUTPUT_HATCH)
|
||||
|
||||
provider.block(MBlocks.ITEM_INPUT_HATCH)
|
||||
provider.block(MBlocks.ITEM_OUTPUT_HATCH)
|
||||
|
||||
}
|
||||
|
@ -5,11 +5,11 @@ import ru.dbotthepony.mc.otm.block.tech.EnergyCounterBlock
|
||||
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
||||
import ru.dbotthepony.mc.otm.block.matter.PatternStorageBlock
|
||||
import ru.dbotthepony.mc.otm.block.storage.DriveViewerBlock
|
||||
import ru.dbotthepony.mc.otm.util.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.util.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
|
||||
fun addComplexBlockStates(provider: MatteryBlockStateProvider) {
|
||||
for (block in MBlocks.DRIVE_VIEWER.values) {
|
||||
|
@ -5,15 +5,15 @@ import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.RotatedPillarBlock
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.neoforged.neoforge.client.model.generators.BlockStateProvider
|
||||
import net.neoforged.neoforge.client.model.generators.ConfiguredModel
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import net.minecraftforge.client.model.generators.BlockStateProvider
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
||||
import ru.dbotthepony.mc.otm.util.getValueNullable
|
||||
import ru.dbotthepony.mc.otm.util.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.util.math.xRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.getValueNullable
|
||||
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
|
||||
import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateNorth
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import java.util.*
|
||||
@ -49,7 +49,7 @@ private fun initialTransform(it: BlockState, modelPath: String, builder: Configu
|
||||
return modelPath
|
||||
}
|
||||
|
||||
class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
private val callbacks = LinkedList<() -> Unit>()
|
||||
|
||||
fun exec(lambda: () -> Unit): MatteryBlockStateProvider {
|
||||
|
@ -1,10 +1,9 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.items
|
||||
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
@ -21,36 +20,22 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
}
|
||||
|
||||
provider.block(MItems.CARBON_FIBRE_BLOCK)
|
||||
provider.block(MItems.METAL_JUNK, MItems.METAL_JUNK.registryName!!.path + "_a")
|
||||
provider.block(MItems.METAL_JUNK)
|
||||
provider.block(MItems.METAL_MESH)
|
||||
provider.generatedTranslucent(MItems.TRITANIUM_BARS, modLocation("block/decorative/tritanium_bars"))
|
||||
provider.generatedTranslucent(MItems.METAL_RAILING, modLocation("block/decorative/metal_railing"))
|
||||
provider.blocks(MItems.TRITANIUM_STRIPED_BLOCK.values)
|
||||
provider.block(MItems.DEEPSLATE_TRITANIUM_ORE)
|
||||
provider.block(MItems.TRITANIUM_ORE)
|
||||
provider.block(MItems.TRITANIUM_STRIPED_BLOCK)
|
||||
provider.block(MItems.TRITANIUM_RAW_BLOCK)
|
||||
provider.block(MItems.TRITANIUM_INGOT_BLOCK)
|
||||
provider.coloredWithBaseBlock(MItems.ITEM_MONITOR, "item_monitor")
|
||||
provider.block(MItems.PHANTOM_ATTRACTOR)
|
||||
provider.block(MItems.HOLO_SIGN)
|
||||
|
||||
provider.block(MItems.TRITANIUM_ORE)
|
||||
provider.block(MItems.DEEPSLATE_TRITANIUM_ORE)
|
||||
provider.block(MItems.TRITANIUM_RAW_BLOCK)
|
||||
provider.block(MItems.TRITANIUM_INGOT_BLOCK)
|
||||
|
||||
provider.block(MItems.WITHERED_STEEL_BLOCK)
|
||||
provider.block(MItems.ROFLITE_ALLOY_BLOCK)
|
||||
|
||||
provider.block(MItems.DILITHIUM_ORE)
|
||||
provider.block(MItems.DEEPSLATE_DILITHIUM_ORE)
|
||||
provider.block(MItems.DILITHIUM_CRYSTAL_BLOCK)
|
||||
|
||||
provider.withExistingParent(MItems.REDSTONE_LAMP_INVERTED, ResourceLocation("minecraft", "block/redstone_lamp_on"))
|
||||
provider.withExistingParent(MItems.REINFORCED_REDSTONE_LAMP, modLocation("block/reinforced_redstone_lamp"))
|
||||
provider.withExistingParent(MItems.REINFORCED_REDSTONE_LAMP_INVERTED, modLocation("block/reinforced_redstone_lamp_on"))
|
||||
|
||||
MRegistry.VENT.allItems.values.forEach(provider::block)
|
||||
MRegistry.VENT_ALTERNATIVE.allItems.values.forEach(provider::block)
|
||||
MRegistry.TRITANIUM_BLOCK.allItems.values.forEach(provider::block)
|
||||
MRegistry.COMPUTER_TERMINAL.allItems.values.forEach(provider::block)
|
||||
MRegistry.STAR_CHAIR.allItems.values.forEach(provider::block)
|
||||
MRegistry.INDUSTRIAL_GLASS.allItems.values.forEach(provider::block)
|
||||
|
||||
for (block in MRegistry.TRITANIUM_STRIPED_BLOCK.flatItems) {
|
||||
@ -69,10 +54,7 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
provider.generated(MItems.PILL_HUMANE)
|
||||
provider.generated(MItems.PILL_OBLIVION)
|
||||
provider.generated(MItems.PILL_HEAL)
|
||||
provider.generated(MItems.PILL_NOT_NORMAL)
|
||||
provider.generated(MItems.NUTRIENT_PASTE)
|
||||
provider.generated(MItems.IMPERFECT_BREAD)
|
||||
provider.generated(MItems.REDSTONE_INTERACTOR)
|
||||
|
||||
provider.generated(MItems.ESSENCE_DRIVE)
|
||||
provider.generated(MItems.ESSENCE_CAPSULE)
|
||||
@ -97,48 +79,26 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
provider.generated(MItems.ExopackUpgrades.SMELTING_UPGRADE)
|
||||
provider.generated(MItems.ExopackUpgrades.ENDER_UPGRADE)
|
||||
|
||||
provider.resource(MItems.TRITANIUM_DUST)
|
||||
provider.resource(MItems.TRITANIUM_INGOT)
|
||||
provider.resource(MItems.TRITANIUM_NUGGET)
|
||||
provider.component(MItems.TRITANIUM_DUST)
|
||||
provider.component(MItems.TRITANIUM_INGOT)
|
||||
provider.component(MItems.TRITANIUM_NUGGET)
|
||||
provider.resource(MItems.TRITANIUM_ORE_CLUMP)
|
||||
|
||||
provider.resource(MItems.DILITHIUM_CRYSTAL)
|
||||
provider.resource(MItems.WITHERED_STEEL)
|
||||
provider.resource(MItems.ROFLITE_ALLOY_INGOT)
|
||||
|
||||
provider.generated(MItems.EXOPACK_PROBE)
|
||||
|
||||
provider.handheld(MItems.TRITANIUM_TOOLS)
|
||||
provider.armorColored(MItems.TRITANIUM_ARMOR)
|
||||
provider.armorWithTrims(MItems.SIMPLE_TRITANIUM_ARMOR)
|
||||
provider.generated(MItems.SIMPLE_TRITANIUM_ARMOR)
|
||||
|
||||
provider.handheld(MItems.CHEST_UPGRADER)
|
||||
|
||||
provider.exec {
|
||||
val path = MItems.CONFIGURATOR.registryName!!.path
|
||||
|
||||
val ready = provider.withExistingParent("${path}_ready", MatteryItemModelProvider.HANDHELD)
|
||||
.texture("layer0", modLocation("item/${path}_ready"))
|
||||
|
||||
provider.withExistingParent(path, MatteryItemModelProvider.HANDHELD)
|
||||
.texture("layer0", modLocation("item/$path"))
|
||||
.override().predicate(modLocation("has_configuration_saved"), 1f).model(ready).end()
|
||||
}
|
||||
|
||||
provider.generated(MItems.BREAD_MONSTER_SPAWN_EGG, modLocation("item/egg/bread_monster"))
|
||||
provider.generated(MItems.LOADER_SPAWN_EGG, modLocation("item/egg/loader"))
|
||||
|
||||
provider.capacitorWithGauge(MItems.BATTERY_CRUDE, 10, "battery_gauge_", modLocation("item/battery_tier0"))
|
||||
provider.capacitorWithGauge(MItems.BATTERY_BASIC, 10, "battery_gauge_", modLocation("item/battery_tier1"))
|
||||
provider.capacitorWithGauge(MItems.BATTERY_NORMAL, 10, "battery_gauge_", modLocation("item/battery_tier2"))
|
||||
provider.capacitorWithGauge(MItems.BATTERY_DENSE, 10, "battery_gauge_", modLocation("item/battery_tier3"))
|
||||
provider.capacitorWithGauge(MItems.BATTERY_CAPACITOR, 10, "battery_gauge_", modLocation("item/battery_tier4"))
|
||||
provider.generatedTiered(MItems.BATTERIES, "battery_tier")
|
||||
provider.generated(MItems.BATTERY_CREATIVE)
|
||||
provider.capacitorWithGauge(MItems.PROCEDURAL_BATTERY, 9, "battery_procedural_gauge_", modLocation("item/battery_procedural"))
|
||||
provider.generated(MItems.PROCEDURAL_BATTERY, modLocation("item/battery_procedural"))
|
||||
|
||||
provider.capacitorWithGauge(MItems.MATTER_CAPACITOR_BASIC, 8, "matter_capacitor_gauge_", modLocation("item/matter_capacitor_tier1"))
|
||||
provider.capacitorWithGauge(MItems.MATTER_CAPACITOR_NORMAL, 8, "matter_capacitor_gauge_", modLocation("item/matter_capacitor_tier2"))
|
||||
provider.capacitorWithGauge(MItems.MATTER_CAPACITOR_DENSE, 8, "matter_capacitor_gauge_", modLocation("item/matter_capacitor_tier3"))
|
||||
provider.generated(MItems.MATTER_CAPACITOR_BASIC, modLocation("item/matter_capacitor_tier1"))
|
||||
provider.generated(MItems.MATTER_CAPACITOR_NORMAL, modLocation("item/matter_capacitor_tier2"))
|
||||
provider.generated(MItems.MATTER_CAPACITOR_DENSE, modLocation("item/matter_capacitor_tier3"))
|
||||
provider.generated(MItems.MATTER_CAPACITOR_CREATIVE)
|
||||
|
||||
provider.generated(MItems.MachineUpgrades.Basic.BLANK, modLocation("item/machine_upgrade_tier1"))
|
||||
@ -186,20 +146,13 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
provider.upgrade(MItems.MachineUpgrades.Creative.MATTER_STORAGE_FLAT_SMALL, "matter", "creative")
|
||||
|
||||
|
||||
provider.capacitorWithGauge(MItems.QUANTUM_BATTERY, 10, "battery_gauge_")
|
||||
provider.capacitorWithGauge(MItems.QUANTUM_CAPACITOR, 10, "battery_gauge_")
|
||||
provider.generated(MItems.QUANTUM_BATTERY)
|
||||
provider.generated(MItems.QUANTUM_CAPACITOR)
|
||||
provider.generated(MItems.QUANTUM_BATTERY_CREATIVE)
|
||||
|
||||
provider.generated(MItems.PATTERN_DRIVE_NORMAL, modLocation("item/pattern_drive_tier1"))
|
||||
provider.generated(MItems.PATTERN_DRIVE_DOUBLE, modLocation("item/pattern_drive_tier2"))
|
||||
provider.generated(MItems.PATTERN_DRIVE_TRIPLE, modLocation("item/pattern_drive_tier3"))
|
||||
provider.generated(MItems.PATTERN_DRIVE_QUAD, modLocation("item/pattern_drive_tier4"))
|
||||
|
||||
provider.generated(MItems.PATTERN_DRIVE_CREATIVE)
|
||||
provider.generated(MItems.PATTERN_DRIVE_CREATIVE2)
|
||||
|
||||
provider.withExistingParent(MItems.GOLD_DISK, MItems.PATTERN_DRIVE_CREATIVE.registryName!!)
|
||||
|
||||
provider.generated(MItems.MATTER_DUST)
|
||||
|
||||
provider.generated(MItems.TRITANIUM_DOOR.values)
|
||||
@ -207,7 +160,7 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
provider.block(MItems.TRITANIUM_TRAPDOOR[null]!!, "tritanium_trapdoor_bottom")
|
||||
|
||||
|
||||
for (color in DyeColor.entries)
|
||||
for (color in DyeColor.values())
|
||||
provider.block(MItems.TRITANIUM_TRAPDOOR[color]!!, "tritanium_trapdoor_${color.name.lowercase()}_bottom")
|
||||
|
||||
for (item in MRegistry.CARGO_CRATES.allItems.values)
|
||||
@ -218,7 +171,6 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
provider.coloredWithBaseBlock(MItems.MATTER_BOTTLER, "matter_bottler", "_idle")
|
||||
provider.coloredWithBaseBlock(MItems.MATTER_SCANNER, "matter_scanner", "_idle")
|
||||
provider.coloredWithBaseBlock(MItems.MATTER_REPLICATOR, "matter_replicator", "_idle")
|
||||
provider.block(MItems.MATTER_ENTANGLER, "matter_entangler_idle")
|
||||
provider.coloredWithBaseBlock(MItems.DRIVE_VIEWER, "drive_viewer", "_idle")
|
||||
provider.coloredWithBaseBlock(MItems.MATTER_DECOMPOSER, "matter_decomposer", "_idle")
|
||||
provider.coloredWithBaseBlock(MItems.ENERGY_SERVO, "energy_servo")
|
||||
@ -245,7 +197,7 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
.end()
|
||||
}
|
||||
|
||||
for (dye in DyeColor.entries) {
|
||||
for (dye in DyeColor.values()) {
|
||||
provider.exec {
|
||||
provider.withExistingParent("android_charger_${dye.name.lowercase()}", modLocation("item/android_charger")).texture("0", modLocation("block/android_charger/${dye.name.lowercase()}"))
|
||||
provider.withExistingParent("matter_panel_${dye.name.lowercase()}", modLocation("item/matter_panel")).texture("texture", modLocation("block/matter_panel/${dye.name.lowercase()}"))
|
||||
@ -261,34 +213,11 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
provider.block(MItems.STORAGE_IMPORTER)
|
||||
provider.block(MItems.STORAGE_EXPORTER)
|
||||
|
||||
provider.block(MItems.FLYWHEEL_HOUSING)
|
||||
provider.block(MItems.FLYWHEEL_BEARING)
|
||||
provider.block(MItems.FLYWHEEL_SHAFT)
|
||||
provider.block(MItems.FLYWHEEL_BATTERY)
|
||||
|
||||
provider.block(MItems.TRITANIUM_HULL)
|
||||
|
||||
provider.block(MItems.GENERATOR_BLOCK)
|
||||
provider.block(MItems.ENERGY_INPUT_INTERFACE)
|
||||
provider.block(MItems.ENERGY_OUTPUT_INTERFACE)
|
||||
|
||||
provider.block(MItems.ENERGY_INPUT_HATCH)
|
||||
provider.block(MItems.ENERGY_OUTPUT_HATCH)
|
||||
|
||||
provider.block(MItems.MATTER_INPUT_HATCH)
|
||||
provider.block(MItems.MATTER_OUTPUT_HATCH)
|
||||
|
||||
provider.block(MItems.ITEM_INPUT_HATCH)
|
||||
provider.block(MItems.ITEM_OUTPUT_HATCH)
|
||||
|
||||
provider.block(MItems.MODULAR_FRAME)
|
||||
provider.block(MItems.HEAVY_MODULAR_FRAME)
|
||||
|
||||
MItems.TRITANIUM_ANVIL.values.forEach { provider.blocks(it) }
|
||||
for (item in MItems.TRITANIUM_ANVIL) {
|
||||
provider.block(item)
|
||||
}
|
||||
|
||||
for ((color, item) in MItems.CARGO_CRATE_MINECARTS) {
|
||||
provider.generated(item)
|
||||
}
|
||||
|
||||
MItems.SUSPICIOUS_FOODS.ITEMS.forEach { provider.inherit(it, it.mimicking()) }
|
||||
}
|
||||
|
@ -6,16 +6,15 @@ import net.minecraft.server.packs.PackType
|
||||
import net.minecraft.world.item.ArmorItem
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.item.Item
|
||||
import net.neoforged.neoforge.client.model.generators.ItemModelProvider
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import net.minecraftforge.client.model.generators.ItemModelProvider
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import java.util.LinkedList
|
||||
|
||||
class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
private val callbacks = LinkedList<() -> Unit>()
|
||||
|
||||
fun exec(func: () -> Unit): MatteryItemModelProvider {
|
||||
@ -32,14 +31,8 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
|
||||
fun block(item: Item) = exec { withExistingParent(item.registryName!!.path, modLocation("block/${item.registryName!!.path}")) }
|
||||
fun block(item: Item, path: String) = exec { withExistingParent(item.registryName!!.path, modLocation("block/$path")) }
|
||||
|
||||
fun withExistingParent(item: Item, path: ResourceLocation) = exec { withExistingParent(item.registryName!!.path, path) }
|
||||
|
||||
fun inherit(item: Item, parent: Item) {
|
||||
exec { withExistingParent(item.registryName!!.path, parent.registryName!!) }
|
||||
}
|
||||
|
||||
fun coloredWithBaseBlock(items: Map<DyeColor?, Item>, path: String) {
|
||||
for (color in DyeColor.entries) {
|
||||
for (color in DyeColor.values()) {
|
||||
block(items[color]!!, path + "_${color.name.lowercase()}")
|
||||
}
|
||||
|
||||
@ -47,7 +40,7 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
|
||||
}
|
||||
|
||||
fun coloredWithBaseBlock(items: Map<DyeColor?, Item>, path: String, suffix: String) {
|
||||
for (color in DyeColor.entries) {
|
||||
for (color in DyeColor.values()) {
|
||||
block(items[color]!!, path + "_${color.name.lowercase()}$suffix")
|
||||
}
|
||||
|
||||
@ -106,29 +99,6 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
|
||||
}
|
||||
}
|
||||
|
||||
fun armorWithTrims(item: Item, texture: ResourceLocation) = exec {
|
||||
val mainModel = withExistingParent(item.registryName!!.path, GENERATED).texture("layer0", texture)
|
||||
|
||||
if (item is ArmorItem) {
|
||||
for ((i, material) in ARMOR_TRIM_MATERIALS.withIndex()) {
|
||||
val trimLocation = ResourceLocation.withDefaultNamespace("trims/items/${item.type.getName()}_trim_${material}")
|
||||
existingFileHelper.trackGenerated(trimLocation, PackType.CLIENT_RESOURCES, ".png", "textures")
|
||||
|
||||
val overrideModel = withExistingParent("${item.registryName!!.path}_${material}_trim", GENERATED)
|
||||
.texture("layer0", texture)
|
||||
.texture("layer1", trimLocation)
|
||||
|
||||
mainModel.override()
|
||||
.predicate(ItemModelGenerators.TRIM_TYPE_PREDICATE_ID, (i + 1).toFloat() / ARMOR_TRIM_MATERIALS.size.toFloat())
|
||||
.model(overrideModel)
|
||||
.end()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun armorWithTrims(vararg items: Item) = items.forEach { armorWithTrims(it, modLocation("item/${it.registryName!!.path}")) }
|
||||
fun armorWithTrims(items: Collection<Item>) = items.forEach { armorWithTrims(it, modLocation("item/${it.registryName!!.path}")) }
|
||||
|
||||
fun armorColored(item: Item) = exec {
|
||||
withExistingParent(item.registryName!!.path, GENERATED)
|
||||
.texture("layer0", modLocation("item/${item.registryName!!.path}_base"))
|
||||
@ -143,33 +113,6 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
|
||||
.texture("layer1", modLocation("item/machine_upgrade_icon_$upgradeType"))
|
||||
}
|
||||
|
||||
fun capacitorWithGauge(item: Item, fillTextures: Int, gaugePrefix: String, baseTexture: ResourceLocation? = null) = exec {
|
||||
val path = item.registryName!!.path
|
||||
val texture = baseTexture ?: modLocation("item/$path")
|
||||
|
||||
val empty = withExistingParent("${path}_empty", GENERATED)
|
||||
.texture("layer0", texture)
|
||||
|
||||
val basic = withExistingParent(path, GENERATED)
|
||||
.texture("layer0", texture)
|
||||
.texture("layer1", modLocation("item/${gaugePrefix}$fillTextures"))
|
||||
.override()
|
||||
.predicate(modLocation("capacitor_gauge"), 0f)
|
||||
.model(empty)
|
||||
.end()
|
||||
|
||||
for (i in 1 .. fillTextures) {
|
||||
val model = withExistingParent("${path}_fill_$i", GENERATED)
|
||||
.texture("layer0", texture)
|
||||
.texture("layer1", modLocation("item/${gaugePrefix}$i"))
|
||||
|
||||
basic.override()
|
||||
.predicate(modLocation("capacitor_gauge"), i.toFloat() / fillTextures.toFloat())
|
||||
.model(model)
|
||||
.end()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val ARMOR_TRIM_MATERIALS = listOf("quartz", "iron", "netherite", "redstone", "copper", "gold", "emerald", "diamond", "lapis", "amethyst")
|
||||
val GENERATED = ResourceLocation("minecraft", "item/generated")
|
||||
|
@ -1,12 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.lang
|
||||
|
||||
import ru.dbotthepony.mc.otm.config.CablesConfig
|
||||
import ru.dbotthepony.mc.otm.registry.*
|
||||
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.game.MEntityTypes
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.game.MSoundEvents
|
||||
|
||||
private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
with(provider.englishColors) {
|
||||
@ -14,7 +8,6 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
add(MRegistry.VENT_ALTERNATIVE, "%s Alternative Vent")
|
||||
|
||||
add(MRegistry.COMPUTER_TERMINAL, "%s Computer Terminal")
|
||||
add(MRegistry.STAR_CHAIR, "%s Star Chair")
|
||||
add(MRegistry.TRITANIUM_BLOCK, "%s Tritanium Block")
|
||||
add(MRegistry.TRITANIUM_STAIRS, "%s Tritanium Stairs")
|
||||
add(MRegistry.TRITANIUM_SLAB, "%s Tritanium Slab")
|
||||
@ -32,7 +25,7 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
}
|
||||
|
||||
with (provider.english) {
|
||||
for ((color, name) in provider.englishColors.mapped) {
|
||||
for ((color, name) in provider.englishColors.dyeClassMapped) {
|
||||
add(MItems.CARGO_CRATE_MINECARTS[color]!!, "Minecart with $name Cargo Crate")
|
||||
add(MEntityTypes.CARGO_CRATE_MINECARTS[color]!!, "Minecart with $name Cargo Crate")
|
||||
|
||||
@ -49,8 +42,6 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description0", "High blast resistance door with redstone latch...")
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description1", "...feeling safe now?")
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description2", "This one is painted $name")
|
||||
|
||||
add(MBlocks.GRILL[color]!!, "$name Briefcase Grill")
|
||||
}
|
||||
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "Tritanium Pressure Plate")
|
||||
@ -58,27 +49,12 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "description1", "High blast resistance")
|
||||
}
|
||||
|
||||
with(provider.englishColors) {
|
||||
addIntermediate(MBlocks.TRITANIUM_STRIPED_BLOCK, "Tritanium %s Striped Block")
|
||||
addIntermediate(MBlocks.TRITANIUM_STRIPED_STAIRS, "Tritanium %s Striped Stairs")
|
||||
addIntermediate(MBlocks.TRITANIUM_STRIPED_SLAB, "Tritanium %s Striped Slab")
|
||||
addIntermediate(MBlocks.TRITANIUM_STRIPED_WALL, "Tritanium %s Striped Wall")
|
||||
}
|
||||
|
||||
with(provider.english) {
|
||||
misc("computer_terminal_tooltip", "Can be used as Redstone button, except it sends signal to block behind it, not under")
|
||||
misc("computer_terminal_tooltip1", "To setup how long it sends redstone signal, interact with it while sneaking")
|
||||
misc("decorative", "Decorative")
|
||||
|
||||
add(MItems.CARGO_CRATE_MINECARTS[null]!!, "Minecart with Cargo Crate")
|
||||
add(MEntityTypes.CARGO_CRATE_MINECARTS[null]!!, "Minecart with Cargo Crate")
|
||||
|
||||
add(MBlocks.GRILL[null]!!, "Briefcase Grill")
|
||||
|
||||
add(MRegistry.CARGO_CRATES.block, "Cargo Crate")
|
||||
add(MRegistry.COMPUTER_TERMINAL.block, "Computer Terminal")
|
||||
add(MRegistry.STAR_CHAIR.block, "Star Chair")
|
||||
add(MRegistry.STAR_CHAIR.block, "desc", "For extensive stargazing.")
|
||||
add(MRegistry.TRITANIUM_BLOCK.block, "Tritanium Block")
|
||||
add(MRegistry.TRITANIUM_STAIRS.block, "Tritanium Stairs")
|
||||
add(MRegistry.TRITANIUM_SLAB.block, "Tritanium Slab")
|
||||
@ -92,11 +68,12 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
add(MRegistry.VENT.block, "Vent")
|
||||
add(MRegistry.VENT_ALTERNATIVE.block, "Alternative Vent")
|
||||
|
||||
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_BLOCK.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.englishColors.mapped[base]!!
|
||||
val stripeName = provider.englishColors.mapped[stripe]!!
|
||||
val baseName = provider.englishColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.englishColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName Colored $stripeName Striped Tritanium Block")
|
||||
}
|
||||
@ -104,8 +81,8 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_STAIRS.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.englishColors.mapped[base]!!
|
||||
val stripeName = provider.englishColors.mapped[stripe]!!
|
||||
val baseName = provider.englishColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.englishColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName Colored $stripeName Striped Tritanium Stairs")
|
||||
}
|
||||
@ -113,8 +90,8 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_SLAB.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.englishColors.mapped[base]!!
|
||||
val stripeName = provider.englishColors.mapped[stripe]!!
|
||||
val baseName = provider.englishColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.englishColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName Colored $stripeName Striped Tritanium Slab")
|
||||
}
|
||||
@ -122,8 +99,8 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_WALL.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.englishColors.mapped[base]!!
|
||||
val stripeName = provider.englishColors.mapped[stripe]!!
|
||||
val baseName = provider.englishColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.englishColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName Colored $stripeName Striped Tritanium Wall")
|
||||
}
|
||||
@ -135,9 +112,6 @@ private fun sounds(provider: MatteryLanguageProvider) {
|
||||
sound("rifle_shot", "Plasma rifle fires")
|
||||
sound("plasma_weapon_overheat", "Plasma weapon overheats")
|
||||
sound("player_become_android", "Player became android")
|
||||
sound("projectile_parry", "Projectile parried")
|
||||
sound("jump_boost", "Jump boost")
|
||||
sound("shockwave", "Landing shockwave")
|
||||
|
||||
sound(MSoundEvents.CARGO_CRATE_OPEN, "Cargo crate opened")
|
||||
}
|
||||
@ -145,19 +119,6 @@ private fun sounds(provider: MatteryLanguageProvider) {
|
||||
|
||||
private fun misc(provider: MatteryLanguageProvider) {
|
||||
with(provider.english) {
|
||||
misc("misc.inert", "Inert")
|
||||
|
||||
misc("misc.yes", "Yes")
|
||||
misc("misc.no", "No")
|
||||
|
||||
misc("pwr_alert1", "[%s]")
|
||||
misc("pwr_alert2", "PWR: ALERT")
|
||||
misc("pwr_alert3", "WARNING ERROR:")
|
||||
misc("pwr_alert4", "system_crash_log")
|
||||
// Error 06E has occurred at 0027F:C0082E2270273 in VXE VMMXDE
|
||||
// Error <Code> has occurred at <Server Block>:<RAM Address> in <Register?>
|
||||
misc("pwr_alert5", "Error %s has occurred at %s:%s in %s")
|
||||
|
||||
gui("double_processing", "Processes two items at once")
|
||||
|
||||
misc("painted.black", "Painted Black")
|
||||
@ -188,16 +149,8 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("needs_no_power", "Requires no power to operate")
|
||||
|
||||
gui("lock_holo_screen", "Lock contents")
|
||||
gui("lock_holo_screen.unlocked", "Unlock contents")
|
||||
gui("lock_holo_screen.tip", "Locking and unlocking contents is only possible in creative.\nWhen locked, text boundaries are removed.")
|
||||
|
||||
gui("holo_screen.resize_text", "Resize text automatically")
|
||||
gui("holo_screen.do_not_resize_text", "Do not resize text")
|
||||
|
||||
gui("abc", "ABC")
|
||||
gui("use_standard_font", "Use standard font")
|
||||
gui("use_small_font", "Use small font")
|
||||
|
||||
gui("ticks", "Ticks")
|
||||
|
||||
gui("power_cost_per_use", "Power cost per use: %s")
|
||||
@ -276,8 +229,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("suffix.exa", "%s E%s")
|
||||
misc("suffix.zetta", "%s Z%s")
|
||||
misc("suffix.yotta", "%s Y%s")
|
||||
misc("suffix.ronna", "%s R%s")
|
||||
misc("suffix.quetta", "%s Q%s")
|
||||
|
||||
misc("suffix.deci", "%s d%s")
|
||||
misc("suffix.centi", "%s c%s")
|
||||
@ -299,8 +250,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("suffix_concise.exa", "%sE")
|
||||
misc("suffix_concise.zetta", "%sZ")
|
||||
misc("suffix_concise.yotta", "%sY")
|
||||
misc("suffix_concise.ronna", "%sR")
|
||||
misc("suffix_concise.quetta", "%sQ")
|
||||
|
||||
misc("suffix_concise.deci", "%sd")
|
||||
misc("suffix_concise.centi", "%sc")
|
||||
@ -321,9 +270,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("suffix_raw.exa", "E")
|
||||
misc("suffix_raw.zetta", "Z")
|
||||
misc("suffix_raw.yotta", "Y")
|
||||
misc("suffix_raw.ronna", "R")
|
||||
misc("suffix_raw.quetta", "Q")
|
||||
|
||||
misc("suffix_raw.deci", "d")
|
||||
misc("suffix_raw.centi", "c")
|
||||
misc("suffix_raw.milli", "m")
|
||||
@ -381,13 +327,9 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("pill.oblivion", "Items and Experience spent on research is fully refunded.")
|
||||
misc("pill.message_oblivion", "All android features are removed and all research refunded.")
|
||||
|
||||
misc("pill.heal", "Provides 8 seconds of Regeneration III.")
|
||||
misc("pill.heal", "Instantly restores 4 hearts upon ingestion, provides 2 min Absorption V and 8 seconds Regeneration III.")
|
||||
misc("pill.heal_android", "Does nothing to androids.")
|
||||
|
||||
misc("pill.not_normal", "Instantly kills fleshy creatures upon ingestion")
|
||||
misc("pill.suspicious_food.desc", "On closer inspection, this food doesn't seem right...")
|
||||
misc("pill.suspicious_food", "Suspicious %s")
|
||||
|
||||
misc("pill.message", "Nothing happened, but you feel... exhausted?.. Maybe get rest.")
|
||||
misc("pill.message_finish", "§kONE OF US ONE OF US ONE OF US")
|
||||
|
||||
@ -403,14 +345,9 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("power.burn_time", "Burn time left: %s ticks")
|
||||
|
||||
gui("progress_widget", "Progress: %s%%")
|
||||
gui("progress_widget_ticks", "Progress: %d / %d (%s%%)")
|
||||
gui("fuel_widget", "Fuel: %s%%")
|
||||
gui("fuel_widget_ticks", "Fuel: %d / %d (%s%%)")
|
||||
gui("progress_stuck", "The machine can not work, check configuration")
|
||||
gui("progress_widget_stuck", "The machine can not work, check configuration")
|
||||
|
||||
gui("total_raw", "Total:")
|
||||
gui("total", "Total: %s")
|
||||
gui("total_approx", "Total: ~%s")
|
||||
|
||||
gui("matter.percentage_level", "Matter level: %s%%")
|
||||
gui("matter.format", "Matter: %s")
|
||||
@ -418,11 +355,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("matter.format_and_complexity2", "%s (%s) / Complexity: %s (%s)")
|
||||
gui("matter.name", "MtU")
|
||||
|
||||
gui("flywheel.top", "When used as flywheel core:")
|
||||
gui("flywheel.storage", "* Storage: %s")
|
||||
gui("flywheel.receive_efficiency", "* Wind up efficiency: %s")
|
||||
gui("flywheel.momentum_loss_speed", "* Momentum loss speed factor: %s")
|
||||
|
||||
gui("filter.is_whitelist", "Is Whitelist")
|
||||
gui("filter.match_nbt", "Match NBT")
|
||||
gui("filter.match_tag", "Match Tag")
|
||||
@ -446,7 +378,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("android_station.research.low_power", "Android Station is low on power! Can't research!")
|
||||
misc("android_station.research.researched", "Researched!")
|
||||
misc("android_station.research.can_be_researched", "Ready to research!")
|
||||
misc("android_station.research.can_not_afford", "Missing required items!")
|
||||
misc("android_station.research.can_not_be_researched", "Can't research!")
|
||||
misc("android_station.research.xp_cost", "Experience cost: %s levels")
|
||||
misc("android_station.research.item", "Requires %s x%s")
|
||||
@ -482,8 +413,6 @@ private fun death(provider: MatteryLanguageProvider) {
|
||||
death("otm_emp", "%1\$s electronics' fried")
|
||||
death("otm_cosmic_rays", "%1\$s electronics' got scrambled by cosmic radiation")
|
||||
death("otm_android_discharge", "%1\$s ran out of power")
|
||||
death("otm_not_normal_pill", "%1\$s took meds")
|
||||
death("otm_not_normal_pill.item", "%1\$s took %2\$s")
|
||||
|
||||
death("otm_become_android.player", "%1\$s lost their humanity whilst %2\$s tried to reason with them")
|
||||
death("otm_become_humane.player", "%1\$s gained their humanity whilst %2\$s tried to reason with them")
|
||||
@ -547,41 +476,10 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
|
||||
add(MBlocks.MATTER_ENTANGLER, "Matter Entangler")
|
||||
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.CRUDE]!!, "Crude Energy Cable")
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.REGULAR]!!, "Energy Cable")
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.ADVANCED]!!, "Advanced Energy Cable")
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.SUPERCONDUCTOR]!!, "Superconductive Energy Cable")
|
||||
|
||||
addBlock(MBlocks.DRIVE_VIEWER.values, "Drive Viewer")
|
||||
|
||||
add(MBlocks.BLACK_HOLE, "Local Anomalous Spacetime Dilation Singular Point")
|
||||
|
||||
add(MBlocks.FLYWHEEL_SHAFT, "Flywheel Shaft")
|
||||
add(MBlocks.FLYWHEEL_SHAFT, "desc", "Placed between bearings, safe for decoration")
|
||||
|
||||
add(MBlocks.FLYWHEEL_BEARING, "Flywheel Bearing")
|
||||
add(MBlocks.FLYWHEEL_BEARING, "desc", "Replaces top and bottom housing blocks in the center, safe for decoration")
|
||||
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "Flywheel Controller")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc", "Multiblock controller, requires housing, bearing, shaft, generator and core material of choice")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc2", "Can have arbitrary height, with bottom limit of 4 blocks tall")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc3", "Built as rectangular shape, with base surface of 5 by 5 blocks")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc4", "Uses Energy *Interface*s as I/O ports, which must be put at same level as generator blocks inside structure,")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc5", "replacing housing blocks")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc6", "Important: must replace housing block in wall in middle at same level where flywheel material start,")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc7", "in other words, controller is put one block above absolute bottom of structure")
|
||||
|
||||
add(MBlocks.FLYWHEEL_HOUSING, "Flywheel Housing")
|
||||
add(MBlocks.FLYWHEEL_HOUSING, "desc", "5xNx5 multiblock casing, safe for decoration")
|
||||
|
||||
add(MBlocks.GENERATOR_BLOCK, "Generator Block")
|
||||
add(MBlocks.GENERATOR_BLOCK, "desc", "Part of a multiblock, safe for decoration")
|
||||
|
||||
add(MBlocks.MODULAR_FRAME, "Modular Frame")
|
||||
add(MBlocks.HEAVY_MODULAR_FRAME, "Heavy Modular Frame")
|
||||
|
||||
add(MBlocks.ENERGY_INPUT_INTERFACE, "Energy Input Interface")
|
||||
add(MBlocks.ENERGY_OUTPUT_INTERFACE, "Energy Output Interface")
|
||||
add(MBlocks.BLACK_HOLE_GENERATOR, "Matter Acceleration Power Generator")
|
||||
|
||||
add(MBlocks.ENERGY_INPUT_HATCH, "Energy Input Hatch")
|
||||
add(MBlocks.ITEM_INPUT_HATCH, "Item Input Hatch")
|
||||
@ -590,13 +488,6 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.ITEM_OUTPUT_HATCH, "Item Output Hatch")
|
||||
add(MBlocks.MATTER_OUTPUT_HATCH, "Matter Output Hatch")
|
||||
|
||||
add(MBlocks.BLACK_HOLE_GENERATOR, "Matter Acceleration Power Generator")
|
||||
add(MBlocks.TRITANIUM_HULL, "Tritanium Hull")
|
||||
add(MBlocks.TRITANIUM_HULL, "desc", "A sturdy part of a multiblock, safe for decoration")
|
||||
add(MBlocks.MATTER_INJECTOR, "Matter Injector")
|
||||
add(MBlocks.ANTIMATTER_INJECTOR, "Antimatter Injector")
|
||||
add(MBlocks.HIGH_ENERGY_PARTICLE_COLLECTOR, "High Energy Particle Collector")
|
||||
|
||||
addBlock(MBlocks.COBBLESTONE_GENERATOR.values, "Cobblestone Generator")
|
||||
add(MBlocks.INFINITE_WATER_SOURCE, "Infinite Water Source")
|
||||
add(MBlocks.INFINITE_WATER_SOURCE, "desc", "Pushes water into all neighbour blocks")
|
||||
@ -618,11 +509,9 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.HOLO_SIGN, "desc", "Multi-line, colored and glowing, text sign")
|
||||
|
||||
add(MBlocks.TRITANIUM_INGOT_BLOCK, "Tritanium Plating Block")
|
||||
add(MBlocks.WITHERED_STEEL_BLOCK, "Withered Steel Block")
|
||||
add(MBlocks.ROFLITE_ALLOY_BLOCK, "Roflite Alloy Block")
|
||||
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "Energy Counter")
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc", "Restricts energy flow direction;")
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc", "Restricts energy flow;")
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc2", "Allows to limit energy throughput;")
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc3", "Collects statistics of passed energy;")
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc4", "Displays flow activity on its monitor")
|
||||
@ -630,9 +519,6 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "facing", "Input facing: %s")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "switch", "Switch input facing")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "limit", "I/O Limit. -1 means no limit")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "display_this", "Display this information on block's screen")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "do_pull", "Pull energy from input side and push to output")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "dont_pull", "Don't pull energy")
|
||||
|
||||
addBlock(MBlocks.CHEMICAL_GENERATOR.values, "Chemical Generator")
|
||||
addBlock(MBlocks.CHEMICAL_GENERATOR.values, "desc", "Generates power by burning solid fuels")
|
||||
@ -655,16 +541,16 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.CARBON_FIBRE_BLOCK, "Carbon Fibre Block")
|
||||
add(MBlocks.METAL_JUNK, "Metal Junk Block")
|
||||
add(MBlocks.METAL_JUNK, "desc", "Useless junk, or is it?")
|
||||
add(MBlocks.METAL_MESH, "Metal Grate")
|
||||
add(MBlocks.METAL_MESH, "Metal Mesh")
|
||||
|
||||
add(MBlocks.TRITANIUM_STRIPED_BLOCK, "Tritanium Striped Block")
|
||||
add(MBlocks.TRITANIUM_STRIPED_STAIRS, "Tritanium Striped Stairs")
|
||||
add(MBlocks.TRITANIUM_STRIPED_SLAB, "Tritanium Striped Slab")
|
||||
add(MBlocks.TRITANIUM_STRIPED_WALL, "Tritanium Striped Wall")
|
||||
add(MBlocks.TRITANIUM_ORE, "Tritanium Ore")
|
||||
add(MBlocks.DEEPSLATE_TRITANIUM_ORE, "Deepslate Tritanium Ore")
|
||||
add(MBlocks.TRITANIUM_RAW_BLOCK, "Raw Tritanium Block")
|
||||
|
||||
add(MBlocks.DILITHIUM_ORE, "Dilithium Ore")
|
||||
add(MBlocks.DEEPSLATE_DILITHIUM_ORE, "Deepslate Dilithium Ore")
|
||||
add(MBlocks.DILITHIUM_CRYSTAL_BLOCK, "Dilithium Crystal Block")
|
||||
|
||||
add(MBlocks.STORAGE_CABLE, "Storage Cable")
|
||||
addBlock(MBlocks.STORAGE_POWER_SUPPLIER.values, "Storage Power Supplier")
|
||||
add(MBlocks.STORAGE_BUS, "Storage Bus")
|
||||
@ -680,16 +566,11 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.PHANTOM_ATTRACTOR, "Phantom Attractor")
|
||||
add(MBlocks.PHANTOM_ATTRACTOR, "desc", "Attracts Phantoms when it is night time")
|
||||
|
||||
add(MBlocks.REDSTONE_LAMP_INVERTED, "Redstone Lamp (Inverted signal)")
|
||||
add(MBlocks.REINFORCED_REDSTONE_LAMP, "Reinforced Redstone Lamp")
|
||||
add(MBlocks.REINFORCED_REDSTONE_LAMP_INVERTED, "Reinforced Redstone Lamp (Inverted signal)")
|
||||
|
||||
add(MBlocks.LABORATORY_LAMP, "Laboratory Lamp")
|
||||
add(MBlocks.LABORATORY_LAMP, "description", "Provides directional light with redstone switch")
|
||||
add(MBlocks.LABORATORY_LAMP_INVERTED, "Laboratory Lamp (Inverted signal)")
|
||||
add(MBlocks.LABORATORY_LAMP_INVERTED, "Laboratory Lamp (Inverted Signal)")
|
||||
add(MBlocks.DANGER_STRIPE_BLOCK, "Danger Stripes")
|
||||
add(MBlocks.METAL_BEAM, "Metal Beam")
|
||||
add(MBlocks.METAL_BEAM_CENTER, "Metal Beam (Center)")
|
||||
|
||||
add(MBlocks.TRITANIUM_DOOR[null]!!, "Tritanium Door")
|
||||
add(MBlocks.TRITANIUM_DOOR[null]!!, "description0", "High blast resistance door with redstone latch...")
|
||||
@ -700,27 +581,14 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[null]!!, "description1", "...feeling safe now?")
|
||||
|
||||
add(MBlocks.TRITANIUM_BARS, "Tritanium Bars")
|
||||
add(MBlocks.METAL_RAILING, "Metal Railing")
|
||||
|
||||
for ((color, blocks) in MBlocks.TRITANIUM_ANVIL.entries) {
|
||||
if (color == null) {
|
||||
for (block in blocks)
|
||||
add(block, "Tritanium Anvil")
|
||||
} else {
|
||||
for (block in blocks)
|
||||
add(block, "${provider.englishColors.mapped[color]} Tritanium Anvil")
|
||||
}
|
||||
}
|
||||
for (block in MBlocks.TRITANIUM_ANVIL)
|
||||
add(block, "Tritanium Anvil")
|
||||
}
|
||||
}
|
||||
|
||||
private fun items(provider: MatteryLanguageProvider) {
|
||||
with(provider.english) {
|
||||
add(MItems.REDSTONE_INTERACTOR, "Redstone Key")
|
||||
add(MItems.REDSTONE_INTERACTOR, "desc", "Allows to 'send' redstone signal out of any block")
|
||||
add(MItems.REDSTONE_INTERACTOR, "desc1", "In other words, allows to temporarily activate redstone mechanisms, such as opening Iron Doors")
|
||||
add(MItems.REDSTONE_INTERACTOR, "desc2", "Use while sneaking to set redstone timer")
|
||||
|
||||
add(MItems.PROCEDURAL_BATTERY, "Mythical Battery")
|
||||
add(MItems.PROCEDURAL_BATTERY, "desc", "These batteries are found in dungeons with randomized stats")
|
||||
|
||||
@ -752,7 +620,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.ESSENCE_SERVO, "desc2", "Can be used as a tool to pump essence manually")
|
||||
|
||||
add(MItems.NUTRIENT_PASTE, "Nutrient Paste")
|
||||
add(MItems.IMPERFECT_BREAD, "Imperfect Bread")
|
||||
|
||||
add(MItems.FLUID_CAPSULE, "Fluid Capsule")
|
||||
add(MItems.FLUID_CAPSULE, "named", "Fluid Capsule (%s)")
|
||||
@ -784,8 +651,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.TRITANIUM_SHEARS, "Tritanium Shears")
|
||||
add(MItems.TRITANIUM_SHIELD, "Tritanium Shield")
|
||||
|
||||
add(MItems.WITHERED_STEEL_SWORD, "Withered Steel Sword")
|
||||
|
||||
add(MItems.TRITANIUM_HELMET, "Tritanium Helmet")
|
||||
add(MItems.TRITANIUM_CHESTPLATE, "Tritanium Chestplate")
|
||||
add(MItems.TRITANIUM_PANTS, "Tritanium Leggings")
|
||||
@ -798,24 +663,16 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
|
||||
add(MItems.TRITANIUM_DUST, "Tritanium Dust")
|
||||
add(MItems.TRITANIUM_INGOT, "Tritanium Ingot")
|
||||
add(MItems.DILITHIUM_CRYSTAL, "Dilithium Crystal")
|
||||
add(MItems.WITHERED_STEEL, "Withered Steel Ingot")
|
||||
add(MItems.ROFLITE_ALLOY_INGOT, "Roflite Alloy Ingot")
|
||||
add(MItems.TRITANIUM_NUGGET, "Tritanium Nugget")
|
||||
add(MItems.MATTER_IO_PORT, "Matter IO Port")
|
||||
add(MItems.MATTER_TRANSFORM_MATRIX, "Matter Transformation Matrix")
|
||||
add(MItems.ANTIMATTER_TRANSFORM_MATRIX, "Antimatter Transformation Matrix")
|
||||
add(MItems.ANTIMATTER_TRANSFORM_MATRIX, "desc", "Can be found in The End cities")
|
||||
add(MItems.ENERGY_BUS, "Energy Bus")
|
||||
add(MItems.ELECTRIC_PARTS, "Electric Parts")
|
||||
add(MItems.ELECTRIC_PARTS, "desc", "Capacitors, resistors, diodes, jumpers...")
|
||||
add(MItems.MECHANICAL_PARTS, "Mechanical Parts")
|
||||
add(MItems.MECHANICAL_PARTS, "desc", "Bearings, gears, fittings, axial shafts...")
|
||||
add(MItems.ELECTRIC_PARTS, "Electric Parts")
|
||||
add(MItems.MACHINE_FRAME, "Machine Frame")
|
||||
add(MItems.TRITANIUM_PLATE, "Tritanium Plate")
|
||||
add(MItems.TRITANIUM_PLATE, "Tritanium Plate")
|
||||
add(MItems.IRON_PLATE, "Iron Plate")
|
||||
add(MItems.GOLD_PLATE, "Gold Plate")
|
||||
add(MItems.COPPER_WIRING, "Copper Wiring")
|
||||
add(MItems.COPPER_WIRING, "Copper Wiring")
|
||||
add(MItems.GOLD_WIRING, "Gold Wiring")
|
||||
add(MItems.PORTABLE_CONDENSATION_DRIVE_CASING, "Portable Condensation Drive Casing")
|
||||
add(MItems.PORTABLE_DENSE_CONDENSATION_DRIVE_CASING, "Portable Dense Condensation Drive Casing")
|
||||
@ -830,20 +687,16 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.MIRROR, "desc", "I can clearly see my own reflection in this mirror")
|
||||
add(MItems.REINFORCED_TRITANIUM_PLATE, "Reinforced Tritanium Plate")
|
||||
add(MItems.REINFORCED_TRITANIUM_PLATE, "desc", "An armor plate, reinforced to withstand great kinetic forces")
|
||||
add(MItems.REINFORCED_IRON_PLATE, "Reinforced Iron Plate")
|
||||
add(MItems.REINFORCED_IRON_PLATE, "desc", "A sturdier and more durable Iron Plate")
|
||||
add(MItems.ARMOR_ASSEMBLY, "Armor assembly")
|
||||
add(MItems.CARBON_MESH, "Carbon Mesh")
|
||||
add(MItems.DISPLAY_SCREEN, "Display Screen")
|
||||
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "Spacetime Equalizer")
|
||||
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "description", "Once within close proximity of massive spacetime dilation anomaly, equalizes spacetime in it's radius")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "description2", "Allows collapse of singularities")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "description3", "Doesn't destroy any of mass singularity had acquired, which result in violent explosion of matter!")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "description4", "The explosion %s be contained by %s. Do not even attempt to contain it.")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "description4_clarification", "can not")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "description4_clarification2", "anything")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "desc", "Once within close proximity of massive spacetime dilation anomaly, equalizes spacetime in it's radius")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "desc2", "Allows collapse of singularities")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "desc3", "Doesn't destroy any of mass singularity had acquired, which result in violent explosion of matter!")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "desc4", "The explosion %s be contained by %s. Do not even attempt to contain it.")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "desc4_clarification", "can not")
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "desc4_clarification2", "anything")
|
||||
|
||||
add(MItems.MATTER_DUST, "Matter Dust")
|
||||
add(MItems.MATTER_DUST, "desc", "This item is product of failed decomposition or replication attempt")
|
||||
@ -854,7 +707,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.PILL_HUMANE, "Humane Pill")
|
||||
add(MItems.PILL_OBLIVION, "Android Factory Reset Pill")
|
||||
add(MItems.PILL_HEAL, "Medical Pill")
|
||||
add(MItems.PILL_NOT_NORMAL, "Not/Normal Pill")
|
||||
|
||||
add(MItems.MATTER_CAPACITOR_PARTS, "Matter Capacitor Parts")
|
||||
add(MItems.MATTER_CAPACITOR_BASIC, "Basic Matter Capacitor")
|
||||
@ -868,24 +720,13 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.ENERGY_SWORD, "desc3", "Always strikes surrounding enemies with full damage if empowered")
|
||||
add(MItems.ENERGY_SWORD, "desc4", "Does not benefit from Sweeping Edge enchantment")
|
||||
|
||||
add(MItems.FALLING_SUN, "◄ Falling Sun ►")
|
||||
add(MItems.FALLING_SUN, "desc", "Prototype weapon, needs power to operate")
|
||||
add(MItems.FALLING_SUN, "desc2", "Deals extra damage to androids when empowered")
|
||||
add(MItems.FALLING_SUN, "desc3", "Always strikes surrounding enemies with full damage if empowered")
|
||||
add(MItems.FALLING_SUN, "desc4", "Does not benefit from Sweeping Edge enchantment")
|
||||
|
||||
add(MItems.PORTABLE_CONDENSATION_DRIVE, "Portable Condensation Drive")
|
||||
add(MItems.PORTABLE_DENSE_CONDENSATION_DRIVE, "Portable Dense Condensation Drive")
|
||||
add(MItems.PLASMA_RIFLE, "Plasma Repeater")
|
||||
add(MItems.TRITANIUM_ORE_CLUMP, "Raw Tritanium")
|
||||
add(MItems.PATTERN_DRIVE_NORMAL, "Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_DOUBLE, "Double-Level Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_TRIPLE, "Triple-Level Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_QUAD, "Quad-Level Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE, "Creative Pattern Drive")
|
||||
|
||||
add(MItems.GOLD_DISK, "Gold Disk")
|
||||
add(MItems.GOLD_DISK, "single_item", "Gold Disk (%s)")
|
||||
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "Omni-Present Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "description1", "Creative-only item")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "description2", "Holds pattern for every item that have matter value")
|
||||
@ -935,18 +776,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.CHEST_UPGRADER, "Crate-r")
|
||||
add(MItems.CHEST_UPGRADER, "desc", "Replaces placed chests and barrels with cargo crates while keeping storage contents")
|
||||
add(MItems.CHEST_UPGRADER, "desc2", "Hold desired crates in the opposite hand")
|
||||
|
||||
add(MItems.CONFIGURATOR, "Configurator")
|
||||
add(MItems.CONFIGURATOR, "desc", "Copies configuration from one block to another")
|
||||
add(MItems.CONFIGURATOR, "desc2", "Sneak-use on block to copy, use to paste")
|
||||
add(MItems.CONFIGURATOR, "desc3", "Use on air while sneaking to clear saved configuration")
|
||||
add(MItems.CONFIGURATOR, "desc_saved", "Saved configuration for: %s")
|
||||
|
||||
add(MItems.BREAD_MONSTER_SPAWN_EGG, "Bread Monster Spawn Egg")
|
||||
add(MEntityTypes.BREAD_MONSTER, "Bread Monster")
|
||||
|
||||
add(MItems.LOADER_SPAWN_EGG, "Loader Spawn Egg")
|
||||
add(MEntityTypes.LOADER, "Loader")
|
||||
}
|
||||
}
|
||||
|
||||
@ -989,71 +818,6 @@ private fun androidFeatures(provider: MatteryLanguageProvider) {
|
||||
|
||||
private fun gui(provider: MatteryLanguageProvider) {
|
||||
with(provider.english) {
|
||||
gui("quickmove_from.restock", "Restock from storage")
|
||||
gui("quickmove_from.restock_with_move", "Quickstack from storage")
|
||||
gui("quickmove_from.move", "Take all")
|
||||
|
||||
gui("quickmove_to.restock", "Restock to storage")
|
||||
gui("quickmove_to.restock_with_move", "Quickstack to storage")
|
||||
gui("quickmove_to.move", "Deposit all")
|
||||
gui("quickmove.exchange", "Smart exchange with storage")
|
||||
gui("quickmove.exchange.desc", "Filtered slots get restocked, everything else gets quickstacked from Exopack")
|
||||
|
||||
gui("quickmove_hint", "Right click to show all variants")
|
||||
|
||||
gui("exopack.accept_wireless_charge", "Accept wireless charging")
|
||||
gui("exopack.dont_accept_wireless_charge", "Do not accept wireless charging")
|
||||
|
||||
gui("charge_androids", "Charge Androids")
|
||||
gui("dont_charge_androids", "Do not charge Androids")
|
||||
|
||||
gui("charge_exopacks", "Charge Exopacks")
|
||||
gui("dont_charge_exopacks", "Do not charge Exopacks")
|
||||
|
||||
gui("multiblock.formed", "Multiblock is formed: %s")
|
||||
|
||||
gui("flywheel.current_loss_t", "Current energy loss per tick:")
|
||||
gui("flywheel.current_loss_s", "Current energy loss per second:")
|
||||
gui("flywheel.core_material", "Core material:")
|
||||
gui("flywheel.core_material_count", "(Core block count: %s)")
|
||||
|
||||
gui("flow_direction_set", "Flow direction set to %s")
|
||||
gui("tick_timer_set", "Timer set to %s ticks")
|
||||
|
||||
gui("config_copied", "Copied configuration for %s")
|
||||
gui("config_pasted", "Applied saved configuration")
|
||||
gui("config_cleared", "Configuration cleared")
|
||||
gui("config_missing", "No configuration to apply")
|
||||
|
||||
gui("black_hole_generator.help0", "Generates energy using angular momentum of Singularities")
|
||||
gui("black_hole_generator.help1", "The stronger gravity Singularity has, the more power is generated!")
|
||||
gui("black_hole_generator.help2", "Using Spacetime Normalizers will reduce gravitation strength of Singularity, which will reduce power output.")
|
||||
gui("black_hole_generator.help3", "This machine is the only 'safe' way of disposing Singularities, by draining them dry by continuously injecting antimatter until Singularity lose all its mass")
|
||||
|
||||
gui("black_hole_generator.injection_rate.mode", "Injection rate")
|
||||
gui("black_hole_generator.injection_rate.desc", "Amount of MtU injected each tick, from either injectors (or both)")
|
||||
gui("black_hole_generator.target_mass.mode", "Target mass")
|
||||
|
||||
gui("black_hole_generator.sustain.mode", "Sustain")
|
||||
gui("black_hole_generator.sustain.desc", "Keep Singularity's mass at target level, injecting matter or antimatter when necessary")
|
||||
|
||||
gui("black_hole_generator.matter_only.mode", "Inject matter only")
|
||||
gui("black_hole_generator.matter_only.desc", "Only inject matter into singularity. Way less power generated, but mass of Singularity will increase over time, as well as power output")
|
||||
|
||||
gui("black_hole_generator.antimatter_only.mode", "Inject antimatter only")
|
||||
gui("black_hole_generator.antimatter_only.desc", "Only inject antimatter into singularity. Way more power generated, but mass of Singularity will decrease over time, as well as power output")
|
||||
|
||||
gui("draw_multiblock_guide", "Draw building guide")
|
||||
gui("ago", "%s ago")
|
||||
|
||||
gui("time.short.5s", "5s")
|
||||
gui("time.short.15s", "15s")
|
||||
gui("time.short.1m", "1m")
|
||||
gui("time.short.10m", "10m")
|
||||
gui("time.short.1h", "1h")
|
||||
gui("time.short.6h", "6h")
|
||||
gui("time.short.24h", "24h")
|
||||
|
||||
gui("part_of_multiblock", "Part of multiblock structure, useless on its own")
|
||||
gui("quicksearch", "Quick search...")
|
||||
|
||||
@ -1190,9 +954,7 @@ private fun gui(provider: MatteryLanguageProvider) {
|
||||
gui("matter_panel.complexity", "Total complexity: %s")
|
||||
|
||||
gui("experience", "%s experience points")
|
||||
gui("experience_with_limit", "%s / %s experience points")
|
||||
gui("experience_levels", "%s experience levels")
|
||||
gui("experience_levels_with_limit", "%s / %s experience levels")
|
||||
|
||||
gui("experience.store", "Store %s experience levels")
|
||||
gui("experience.store_all", "Store all experience levels")
|
||||
@ -1233,13 +995,6 @@ private fun jade(provider: MatteryLanguageProvider) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun maps(provider: MatteryLanguageProvider) {
|
||||
with(provider.english) {
|
||||
map("laboratory", "Laboratory Map")
|
||||
map("wreckage", "Wreckage Map")
|
||||
}
|
||||
}
|
||||
|
||||
fun AddEnglishLanguage(provider: MatteryLanguageProvider) {
|
||||
decoratives(provider)
|
||||
sounds(provider)
|
||||
@ -1256,8 +1011,6 @@ fun AddEnglishLanguage(provider: MatteryLanguageProvider) {
|
||||
|
||||
jade(provider)
|
||||
|
||||
maps(provider)
|
||||
|
||||
with(provider.english) {
|
||||
add("itemGroup.otm", "Overdrive That Matters")
|
||||
add("itemGroup.otm_decorative", "Overdrive That Matters Decorative")
|
||||
|
@ -1,5 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.lang
|
||||
|
||||
import com.google.common.collect.ImmutableList
|
||||
import com.google.common.collect.ImmutableMap
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap
|
||||
import net.minecraft.data.DataGenerator
|
||||
@ -12,12 +13,14 @@ import net.minecraft.world.entity.EntityType
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.enchantment.Enchantment
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.neoforged.neoforge.common.data.LanguageProvider
|
||||
import net.minecraftforge.common.data.LanguageProvider
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.player.android.AndroidFeatureType
|
||||
import ru.dbotthepony.mc.otm.player.android.AndroidResearchType
|
||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.android.AndroidFeatureType
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearch
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchType
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
||||
|
||||
@ -36,7 +39,7 @@ private fun researchString(key: AndroidResearchType): String {
|
||||
}
|
||||
|
||||
class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
private inner class Slave(language: String) : LanguageProvider(gen.packOutput, OverdriveThatMatters.MOD_ID, language) {
|
||||
private inner class Slave(language: String) : LanguageProvider(gen, OverdriveThatMatters.MOD_ID, language) {
|
||||
override fun addTranslations() {}
|
||||
}
|
||||
|
||||
@ -85,6 +88,7 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
fun addItem(key: Collection<Item>, value: String) = key.forEach { add(it, value) }
|
||||
fun add(key: Item, suffix: String, value: String) = slave.add("${key.descriptionId}.${suffix}", value)
|
||||
fun add(key: ItemStack, value: String) = slave.add(key, value)
|
||||
fun add(key: Enchantment, value: String) = slave.add(key, value)
|
||||
fun add(key: MobEffect, value: String) = slave.add(key, value)
|
||||
fun add(key: EntityType<*>, value: String) = slave.add(key, value)
|
||||
|
||||
@ -107,8 +111,6 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
fun jade(key: String, value: String) = slave.add("otm.jade.$key", value)
|
||||
fun jadeloc(key: String, value: String) = slave.add("config.jade.plugin_${DataGen.MOD_ID}.$key", value)
|
||||
|
||||
fun map(key: String, value: String) = slave.add("filled_map.otm_$key", value)
|
||||
|
||||
inner class Prepended(path: String) {
|
||||
val path = "$path."
|
||||
constructor(vararg path: String) : this(path.joinToString("."))
|
||||
@ -123,7 +125,6 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
|
||||
inner class Colors(
|
||||
language: String,
|
||||
val lowercaseIntermediate: Boolean,
|
||||
|
||||
val white: String,
|
||||
val orange: String,
|
||||
@ -144,7 +145,86 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
) {
|
||||
val slave: LanguageProvider = slaves.computeIfAbsent(language, ::Slave)
|
||||
|
||||
val mapped: Map<DyeColor, String> = ImmutableMap.builder<DyeColor, String>()
|
||||
val list: List<String> = ImmutableList.builder<String>()
|
||||
.add(white)
|
||||
.add(orange)
|
||||
.add(magenta)
|
||||
.add(lightBlue)
|
||||
.add(yellow)
|
||||
.add(lime)
|
||||
.add(pink)
|
||||
.add(gray)
|
||||
.add(lightGray)
|
||||
.add(cyan)
|
||||
.add(purple)
|
||||
.add(blue)
|
||||
.add(brown)
|
||||
.add(green)
|
||||
.add(red)
|
||||
.add(black)
|
||||
.build()
|
||||
|
||||
val pairList: List<Pair<String, String>> = ImmutableList.builder<Pair<String, String>>()
|
||||
.add("white" to white)
|
||||
.add("orange" to orange)
|
||||
.add("magenta" to magenta)
|
||||
.add("light_blue" to lightBlue)
|
||||
.add("yellow" to yellow)
|
||||
.add("lime" to lime)
|
||||
.add("pink" to pink)
|
||||
.add("gray" to gray)
|
||||
.add("light_gray" to lightGray)
|
||||
.add("cyan" to cyan)
|
||||
.add("purple" to purple)
|
||||
.add("blue" to blue)
|
||||
.add("brown" to brown)
|
||||
.add("green" to green)
|
||||
.add("red" to red)
|
||||
.add("black" to black)
|
||||
.build()
|
||||
|
||||
val mapped: Map<String, String> = ImmutableMap.builder<String, String>()
|
||||
.put("white", white)
|
||||
.put("orange", orange)
|
||||
.put("magenta", magenta)
|
||||
.put("lightBlue", lightBlue)
|
||||
.put("light_blue", lightBlue)
|
||||
.put("yellow", yellow)
|
||||
.put("lime", lime)
|
||||
.put("pink", pink)
|
||||
.put("gray", gray)
|
||||
.put("lightGray", lightGray)
|
||||
.put("light_gray", lightGray)
|
||||
.put("cyan", cyan)
|
||||
.put("purple", purple)
|
||||
.put("blue", blue)
|
||||
.put("brown", brown)
|
||||
.put("green", green)
|
||||
.put("red", red)
|
||||
.put("black", black)
|
||||
|
||||
.put("WHITE", white)
|
||||
.put("ORANGE", orange)
|
||||
.put("MAGENTA", magenta)
|
||||
.put("LIGHTBLUE", lightBlue)
|
||||
.put("LIGHT_BLUE", lightBlue)
|
||||
.put("YELLOW", yellow)
|
||||
.put("LIME", lime)
|
||||
.put("PINK", pink)
|
||||
.put("GRAY", gray)
|
||||
.put("LIGHTGRAY", lightGray)
|
||||
.put("LIGHT_GRAY", lightGray)
|
||||
.put("CYAN", cyan)
|
||||
.put("PURPLE", purple)
|
||||
.put("BLUE", blue)
|
||||
.put("BROWN", brown)
|
||||
.put("GREEN", green)
|
||||
.put("RED", red)
|
||||
.put("BLACK", black)
|
||||
|
||||
.build()
|
||||
|
||||
val dyeClassMapped: Map<DyeColor, String> = ImmutableMap.builder<DyeColor, String>()
|
||||
.put(DyeColor.WHITE, white)
|
||||
.put(DyeColor.ORANGE, orange)
|
||||
.put(DyeColor.MAGENTA, magenta)
|
||||
@ -163,30 +243,37 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
.put(DyeColor.BLACK, black)
|
||||
.build()
|
||||
|
||||
fun add(list: ColoredDecorativeBlock<*>, toFormat: String) {
|
||||
for ((color, target) in mapped) {
|
||||
val dyeClassPairs: List<Pair<DyeColor, String>> = ImmutableList.builder<Pair<DyeColor, String>>()
|
||||
.add(DyeColor.WHITE to white)
|
||||
.add(DyeColor.ORANGE to orange)
|
||||
.add(DyeColor.MAGENTA to magenta)
|
||||
.add(DyeColor.LIGHT_BLUE to lightBlue)
|
||||
.add(DyeColor.YELLOW to yellow)
|
||||
.add(DyeColor.LIME to lime)
|
||||
.add(DyeColor.PINK to pink)
|
||||
.add(DyeColor.GRAY to gray)
|
||||
.add(DyeColor.LIGHT_GRAY to lightGray)
|
||||
.add(DyeColor.CYAN to cyan)
|
||||
.add(DyeColor.PURPLE to purple)
|
||||
.add(DyeColor.BLUE to blue)
|
||||
.add(DyeColor.BROWN to brown)
|
||||
.add(DyeColor.GREEN to green)
|
||||
.add(DyeColor.RED to red)
|
||||
.add(DyeColor.BLACK to black)
|
||||
.build()
|
||||
|
||||
fun add(list: ColoredDecorativeBlock, toFormat: String) {
|
||||
for ((color, target) in dyeClassPairs) {
|
||||
slave.add(list.blocks[color]!!, toFormat.format(target))
|
||||
}
|
||||
}
|
||||
|
||||
fun forEach(consumer: (color: DyeColor, name: String) -> Unit) {
|
||||
for ((a, b) in mapped) {
|
||||
for ((a, b) in dyeClassPairs) {
|
||||
consumer.invoke(a, b)
|
||||
}
|
||||
}
|
||||
|
||||
fun add(map: Map<in DyeColor, Block>, toFormat: String) {
|
||||
for ((color, block) in map) {
|
||||
slave.add(block, toFormat.format(mapped[color]!!))
|
||||
}
|
||||
}
|
||||
|
||||
fun addIntermediate(map: Map<in DyeColor, Block>, toFormat: String) {
|
||||
for ((color, block) in map) {
|
||||
slave.add(block, toFormat.format(if (lowercaseIntermediate) mapped[color]!!.lowercase() else mapped[color]!!))
|
||||
}
|
||||
}
|
||||
|
||||
fun add(
|
||||
whiteBlock: Block,
|
||||
orangeBlock: Block,
|
||||
@ -264,7 +351,7 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
}
|
||||
}
|
||||
|
||||
val englishColors = Colors("en_us", lowercaseIntermediate = false,
|
||||
val englishColors = Colors("en_us",
|
||||
"White",
|
||||
"Orange",
|
||||
"Magenta",
|
||||
@ -283,18 +370,18 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
||||
"Black",
|
||||
)
|
||||
|
||||
val russianColors = Colors("ru_ru", lowercaseIntermediate = true,
|
||||
val russianColors = Colors("ru_ru",
|
||||
"Белый",
|
||||
"Оранжевый",
|
||||
"Пурпурный",
|
||||
"Голубой",
|
||||
"Маджентовый",
|
||||
"Светло Синий",
|
||||
"Жёлтый",
|
||||
"Лаймовый",
|
||||
"Розовый",
|
||||
"Серый",
|
||||
"Светло-серый",
|
||||
"Бирюзовый",
|
||||
"Фиолетовый",
|
||||
"Светло Серый",
|
||||
"Циановый",
|
||||
"Пурпурный",
|
||||
"Синий",
|
||||
"Коричневый",
|
||||
"Зелёный",
|
||||
|
@ -1,61 +1,49 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.lang
|
||||
|
||||
import ru.dbotthepony.mc.otm.config.CablesConfig
|
||||
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.game.MEntityTypes
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MEntityTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import ru.dbotthepony.mc.otm.registry.game.MSoundEvents
|
||||
import ru.dbotthepony.mc.otm.registry.MSoundEvents
|
||||
|
||||
private const val HIGH_BLAST_RESISTANCE = "Высокая взрывоустойчивость"
|
||||
private const val HIGH_BLAST_RESISTANCE_DOOR = "Взрывоустойчивая дверь с засовом красного камня..."
|
||||
private const val FEELING_SAFE_NOW = "...ощущаете ли вы себя теперь в безопасности?"
|
||||
|
||||
private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
with(provider.russianColors) {
|
||||
add(MRegistry.VENT, "%s вентиляция")
|
||||
add(MRegistry.VENT_ALTERNATIVE, "%s альтернативная вентиляция")
|
||||
|
||||
add(MRegistry.TRITANIUM_BLOCK, "%s тритановый блок")
|
||||
add(MRegistry.COMPUTER_TERMINAL, "%s компьютерный терминал")
|
||||
add(MRegistry.TRITANIUM_STAIRS, "%s тритановые ступеньки")
|
||||
add(MRegistry.TRITANIUM_SLAB, "%s тритановая плита")
|
||||
add(MRegistry.TRITANIUM_WALL, "%s тритановая ограда")
|
||||
add(MRegistry.FLOOR_TILES, "%s керамическая плитка")
|
||||
add(MRegistry.FLOOR_TILES_STAIRS, "%s ступеньки из керамической плитки")
|
||||
add(MRegistry.FLOOR_TILES_SLAB, "%s плита из керамической плитки")
|
||||
add(MRegistry.UNREFINED_FLOOR_TILES, "Необработанная %s кирамическая Плитка")
|
||||
|
||||
add(MRegistry.INDUSTRIAL_GLASS, "%s окрашенное промышленное стекло")
|
||||
add(MRegistry.INDUSTRIAL_GLASS_PANE, "%s окрашенная промышленная стеклянная панель")
|
||||
|
||||
add(MRegistry.CARGO_CRATES, "%s грузовой ящик")
|
||||
add(MRegistry.DECORATIVE_CRATE, "%s блок контейнера")
|
||||
}
|
||||
|
||||
with (provider.russian) {
|
||||
for (block in MBlocks.TRITANIUM_ANVIL[null]!!)
|
||||
add(block, "Тритановая наковальня")
|
||||
for ((color, name) in provider.russianColors.dyeClassMapped) {
|
||||
add(MItems.CARGO_CRATE_MINECARTS[color]!!, "Вагонетка с $name грузовым ящиком")
|
||||
add(MEntityTypes.CARGO_CRATE_MINECARTS[color]!!, "Вагонетка с $name грузовым ящиком")
|
||||
|
||||
for ((color, name) in provider.russianColors.mapped) {
|
||||
val nameF = name.replace("ый", "ая").replace("ой", "ая").replace("ий", "яя")
|
||||
|
||||
add(MRegistry.VENT.getBlock(color), "$nameF вентиляция")
|
||||
add(MRegistry.VENT_ALTERNATIVE.getBlock(color), "$nameF альтернативная вентиляция")
|
||||
|
||||
for (block in MBlocks.TRITANIUM_ANVIL[color]!!) {
|
||||
add(block, "$nameF тритановая наковальня")
|
||||
}
|
||||
|
||||
val nameMul = name.replace("ый", "ые").replace("ой", "ые").replace("ий", "ие")
|
||||
add(MRegistry.TRITANIUM_BLOCK.getBlock(color), "$name тритановый блок")
|
||||
add(MRegistry.COMPUTER_TERMINAL.getBlock(color), "$name компьютерный терминал")
|
||||
add(MRegistry.STAR_CHAIR.getBlock(color), "$name звезданутый стул")
|
||||
add(MRegistry.STAR_CHAIR.getBlock(color), "desc", "Для длительного наблюдения за звёздами.")
|
||||
add(MRegistry.TRITANIUM_STAIRS.getBlock(color), "$name тритановые ступеньки")
|
||||
add(MRegistry.TRITANIUM_SLAB.getBlock(color), "$nameF тритановая плита")
|
||||
add(MRegistry.TRITANIUM_WALL.getBlock(color), "$nameF тритановая ограда")
|
||||
add(MRegistry.FLOOR_TILES.getBlock(color), "$nameF керамическая плитка")
|
||||
add(MRegistry.FLOOR_TILES_STAIRS.getBlock(color), "$nameMul ступеньки из керамической плитки")
|
||||
add(MRegistry.FLOOR_TILES_SLAB.getBlock(color), "$nameF плита из керамической плитки")
|
||||
add(MRegistry.UNREFINED_FLOOR_TILES.getBlock(color), "Необработанная ${nameF.lowercase()} керамическая плитка")
|
||||
|
||||
val nameN = name.replace("ый", "ое").replace("ой", "ое").replace("ий", "ее")
|
||||
add(MRegistry.INDUSTRIAL_GLASS.getBlock(color), "$nameN окрашенное промышленное стекло")
|
||||
add(MRegistry.INDUSTRIAL_GLASS_PANE.getBlock(color), "$nameF окрашенная промышленная стеклянная панель")
|
||||
|
||||
add(MRegistry.CARGO_CRATES.getBlock(color), "$name грузовой ящик")
|
||||
add(MRegistry.DECORATIVE_CRATE.getBlock(color), "$name блок контейнера")
|
||||
|
||||
val nameAdj = name.replace("ый", "ым").replace("ой", "ым").replace("ий", "им").lowercase()
|
||||
add(MItems.CARGO_CRATE_MINECARTS[color]!!, "Вагонетка с $nameAdj грузовым ящиком")
|
||||
add(MEntityTypes.CARGO_CRATE_MINECARTS[color]!!, "Вагонетка с $nameAdj грузовым ящиком")
|
||||
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.getBlock(color), "$nameF тритановая нажимная пластина")
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.getBlock(color), "$name тритановая нажимная пластина")
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.getBlock(color), "description0", "Активируется только при наступлении игрока на неё")
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.getBlock(color), "description1", HIGH_BLAST_RESISTANCE)
|
||||
|
||||
add(MBlocks.TRITANIUM_DOOR[color]!!, "$nameF тритановая дверь")
|
||||
add(MBlocks.TRITANIUM_DOOR[color]!!, "$name тритановая дверь")
|
||||
add(MBlocks.TRITANIUM_DOOR[color]!!, "description0", HIGH_BLAST_RESISTANCE_DOOR)
|
||||
add(MBlocks.TRITANIUM_DOOR[color]!!, "description1", FEELING_SAFE_NOW)
|
||||
add(MBlocks.TRITANIUM_DOOR[color]!!, "description2", "Данный вариант выкрашен в $name")
|
||||
@ -64,26 +52,19 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description0", HIGH_BLAST_RESISTANCE_DOOR)
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description1", FEELING_SAFE_NOW)
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description2", "Данный вариант выкрашен в $name")
|
||||
|
||||
add(MBlocks.GRILL[color]!!, "$name мангал-дипломат")
|
||||
}
|
||||
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "Тритановая нажимная пластина")
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "description0", "Активируется только при наступлении игрока на неё")
|
||||
add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "description1", HIGH_BLAST_RESISTANCE)
|
||||
}
|
||||
|
||||
misc("computer_terminal_tooltip", "Может быть использован как кнопка, с оговоркой что он посылает сигнал блоку сзади, а не под ним")
|
||||
misc("computer_terminal_tooltip1", "Для настройки таймера взаимодействуйте будучи крадясь")
|
||||
misc("decorative", "Элемент декора")
|
||||
|
||||
add(MBlocks.GRILL[null]!!, "Мангал-дипломат")
|
||||
|
||||
with(provider.russian) {
|
||||
add(MItems.CARGO_CRATE_MINECARTS[null]!!, "Вагонетка с грузовым ящиком")
|
||||
add(MEntityTypes.CARGO_CRATE_MINECARTS[null]!!, "Вагонетка с грузовым ящиком")
|
||||
|
||||
add(MRegistry.CARGO_CRATES.block, "Грузовой ящик")
|
||||
add(MRegistry.COMPUTER_TERMINAL.block, "Компьютерный терминал")
|
||||
add(MRegistry.STAR_CHAIR.block, "Звезданутый стул")
|
||||
add(MRegistry.TRITANIUM_BLOCK.block, "Тритановый блок")
|
||||
add(MRegistry.TRITANIUM_STAIRS.block, "Тритановые ступеньки")
|
||||
add(MRegistry.TRITANIUM_SLAB.block, "Тритановая плита")
|
||||
@ -95,51 +76,42 @@ private fun decoratives(provider: MatteryLanguageProvider) {
|
||||
add(MRegistry.DECORATIVE_CRATE.block, "Ржавый грузовой контейнер")
|
||||
|
||||
add(MRegistry.VENT.block, "Вентиляция")
|
||||
add(MRegistry.VENT_ALTERNATIVE.block, "Альтернативная вентиляция")
|
||||
|
||||
for ((color, name) in provider.russianColors.mapped) {
|
||||
val stripeName = name.replace("ый", "ой").replace("ий", "ей").lowercase()
|
||||
|
||||
add(MBlocks.TRITANIUM_STRIPED_BLOCK[color]!!, "Тритановый блок с $stripeName полоской")
|
||||
add(MBlocks.TRITANIUM_STRIPED_STAIRS[color]!!, "Тритановые ступеньки с $stripeName полоской")
|
||||
add(MBlocks.TRITANIUM_STRIPED_SLAB[color]!!, "Тритановая плита с $stripeName полоской")
|
||||
add(MBlocks.TRITANIUM_STRIPED_WALL[color]!!, "Тритановая ограда с $stripeName полоской")
|
||||
}
|
||||
add(MRegistry.VENT_ALTERNATIVE.block, "Альтернаятивная вентиляция")
|
||||
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_BLOCK.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.russianColors.mapped[base]!!
|
||||
val stripeName = provider.russianColors.mapped[stripe]!!.replace("ый", "ой").replace("ий", "ей").lowercase()
|
||||
val baseName = provider.russianColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.russianColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName тритановый блок c $stripeName полоской")
|
||||
add(block, "$baseName-окрашенный $stripeName-ополосаченный тритановый блок")
|
||||
}
|
||||
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_STAIRS.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.russianColors.mapped[base]!!.replace("ый", "ые").replace("ой", "ые").replace("ий", "ие")
|
||||
val stripeName = provider.russianColors.mapped[stripe]!!.replace("ый", "ой").replace("ий", "ей").lowercase()
|
||||
val baseName = provider.russianColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.russianColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName тритановые ступеньки c $stripeName полоской")
|
||||
add(block, "$baseName-окрашенные $stripeName-ополосаченные тритановые ступеньки")
|
||||
}
|
||||
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_SLAB.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.russianColors.mapped[base]!!.replace("ый", "ая").replace("ой", "ые").replace("ий", "яя")
|
||||
val stripeName = provider.russianColors.mapped[stripe]!!.replace("ый", "ой").replace("ий", "ей").lowercase()
|
||||
val baseName = provider.russianColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.russianColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName тритановая плита c $stripeName полоской")
|
||||
add(block, "$baseName-окрашенная $stripeName-ополосаченная тритановая Плита")
|
||||
}
|
||||
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_WALL.blocksWithColor) {
|
||||
val (base, stripe) = colors
|
||||
|
||||
val baseName = provider.russianColors.mapped[base]!!.replace("ый", "ая").replace("ой", "ая").replace("ий", "яя")
|
||||
val stripeName = provider.russianColors.mapped[stripe]!!.replace("ый", "ой").replace("ий", "ей").lowercase()
|
||||
val baseName = provider.russianColors.dyeClassMapped[base]!!
|
||||
val stripeName = provider.russianColors.dyeClassMapped[stripe]!!
|
||||
|
||||
add(block, "$baseName тритановая ограда c $stripeName полоской")
|
||||
add(block, "$baseName-окрашенная $stripeName-ополосаченная тритановая ограда")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -149,9 +121,6 @@ private fun sounds(provider: MatteryLanguageProvider) {
|
||||
sound("rifle_shot", "Выстрел плазменной винтовки")
|
||||
sound("plasma_weapon_overheat", "Плазменное оружие перегрелось")
|
||||
sound("player_become_android", "Игрок превратился в андроида")
|
||||
sound("projectile_parry", "Снаряд парирован")
|
||||
sound("jump_boost", "Усиленный прыжок")
|
||||
sound("shockwave", "Ударная волна от приземления")
|
||||
|
||||
sound(MSoundEvents.CARGO_CRATE_OPEN, "Открыт грузовой ящик")
|
||||
}
|
||||
@ -159,15 +128,6 @@ private fun sounds(provider: MatteryLanguageProvider) {
|
||||
|
||||
private fun misc(provider: MatteryLanguageProvider) {
|
||||
with(provider.russian) {
|
||||
misc("misc.inert", "Инертен")
|
||||
|
||||
misc("misc.yes", "Да")
|
||||
misc("misc.no", "Нет")
|
||||
|
||||
misc("pwr_alert2", "ПТН: ВНИМАНИЕ")
|
||||
misc("pwr_alert3", "ПРЕДУПРЕЖДЕНИЕ ОБ ОШИБКЕ:")
|
||||
misc("pwr_alert5", "Ошибка %s была обнаружена по адресу %s:%s в %s")
|
||||
|
||||
gui("double_processing", "Обрабатывает два предмета одновременно")
|
||||
|
||||
misc("painted.black", "Окрашено в чёрный")
|
||||
@ -198,16 +158,8 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("needs_no_power", "Не требует энергии для работы")
|
||||
|
||||
gui("lock_holo_screen", "Заблокировать содержимое")
|
||||
gui("lock_holo_screen.unlocked", "Разблокировать содержимое")
|
||||
gui("lock_holo_screen.tip", "Блокировка и разблокировка содержимого возможна только в режиме творчества.\nКогда заблокировано, границы ввода текста отключены.")
|
||||
|
||||
gui("holo_screen.resize_text", "Изменять размер текста автоматически")
|
||||
gui("holo_screen.do_not_resize_text", "Не менять размер текста")
|
||||
|
||||
gui("abc", "АБВ")
|
||||
gui("use_standard_font", "Использовать стандартный шрифт")
|
||||
gui("use_small_font", "Использовать уменьшенный шрифт")
|
||||
|
||||
gui("ticks", "Тиков")
|
||||
|
||||
gui("power_cost_per_use", "Энергии на операцию: %s")
|
||||
@ -286,8 +238,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("suffix.exa", "%s Э%s")
|
||||
misc("suffix.zetta", "%s З%s")
|
||||
misc("suffix.yotta", "%s И%s")
|
||||
misc("suffix.ronna", "%s Рн%s")
|
||||
misc("suffix.quetta", "%s Кв%s")
|
||||
|
||||
misc("suffix.deci", "%s д%s")
|
||||
misc("suffix.centi", "%s с%s")
|
||||
@ -309,9 +259,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("suffix_concise.exa", "%sЭ")
|
||||
misc("suffix_concise.zetta", "%sЗ")
|
||||
misc("suffix_concise.yotta", "%sИ")
|
||||
misc("suffix_concise.ronna", "%sРн")
|
||||
misc("suffix_concise.quetta", "%sКв")
|
||||
|
||||
misc("suffix_concise.deci", "%sд")
|
||||
misc("suffix_concise.centi", "%sс")
|
||||
misc("suffix_concise.milli", "%sм")
|
||||
@ -331,9 +278,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("suffix_raw.exa", "Э")
|
||||
misc("suffix_raw.zetta", "З")
|
||||
misc("suffix_raw.yotta", "И")
|
||||
misc("suffix_raw.ronna", "Рн")
|
||||
misc("suffix_raw.quetta", "Кв")
|
||||
|
||||
misc("suffix_raw.deci", "д")
|
||||
misc("suffix_raw.centi", "с")
|
||||
misc("suffix_raw.milli", "м")
|
||||
@ -390,13 +334,9 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("pill.oblivion", "Предметы и Очки опыта, потраченные на исследования полностью возвращаются.")
|
||||
misc("pill.message_oblivion", "Все возможности андроида были удалены, а потраченные на исследования предметы и опыт возвращены.")
|
||||
|
||||
misc("pill.heal", "Даёт регенерацию III на 8 секунд.")
|
||||
misc("pill.heal", "Мгновенно восполняет 4 сердца при употреблении, а так же даёт на 2 минуты поглощение V и на 8 секунд регенерацию III.")
|
||||
misc("pill.heal_android", "Не действует на андроидов.")
|
||||
|
||||
misc("pill.not_normal", "Мгновенно убивает существ из плоти")
|
||||
misc("pill.suspicious_food.desc", "При более тщательном рассмотрении данная пища выглядит подозрительно...")
|
||||
misc("pill.suspicious_food", "Подозрительный %s")
|
||||
|
||||
misc("pill.message", "Ничего не произошло, но вы чувствуете... себя уставшим?.. Возможно надо отдохнуть.")
|
||||
misc("pill.message_finish", "§kОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС")
|
||||
|
||||
@ -413,8 +353,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("progress_widget_stuck", "Это устройство не может продолжить работу, проверьте конфигурацию")
|
||||
|
||||
gui("total_raw", "Всего:")
|
||||
gui("total", "Всего: %s")
|
||||
gui("total_approx", "Всего примерно: %s")
|
||||
|
||||
gui("matter.percentage_level", "Уровень материи: %s%%")
|
||||
gui("matter.format", "Материя: %s")
|
||||
@ -422,11 +360,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("matter.format_and_complexity2", "%s (%s) / Сложность: %s (%s)")
|
||||
gui("matter.name", "МтЕд")
|
||||
|
||||
gui("flywheel.top", "Как материал сердечника маховой батареи:")
|
||||
gui("flywheel.storage", "* Хранилище: %s")
|
||||
gui("flywheel.receive_efficiency", "* КПД раскрутки: %s")
|
||||
gui("flywheel.momentum_loss_speed", "* Фактор потери накопленной скорости: %s")
|
||||
|
||||
gui("filter.is_whitelist", "Белый список")
|
||||
gui("filter.match_nbt", "Сравнивать NBT")
|
||||
gui("filter.match_tag", "Сравнить Теги")
|
||||
@ -450,7 +383,6 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("android_station.research.low_power", "Мало питания у станции андроидов! Исследования недоступны!")
|
||||
misc("android_station.research.researched", "Исследовано!")
|
||||
misc("android_station.research.can_be_researched", "Готово к исследованию!")
|
||||
misc("android_station.research.can_not_afford", "Не хватает предметов!")
|
||||
misc("android_station.research.can_not_be_researched", "Нельзя исследовать!")
|
||||
misc("android_station.research.xp_cost", "Требуется %s уровней Опыта")
|
||||
misc("android_station.research.item", "Требует %s %s шт.")
|
||||
@ -486,8 +418,6 @@ private fun death(provider: MatteryLanguageProvider) {
|
||||
death("otm_emp", "Электроника %1\$s перегорела")
|
||||
death("otm_cosmic_rays", "Электроника %1\$s была ошеломлена космическим излучением")
|
||||
death("otm_android_discharge", "В аккумуляторах %1\$s закончился заряд")
|
||||
death("otm_not_normal_pill", "%1\$s принял таблетки")
|
||||
death("otm_not_normal_pill.item", "%1\$s принял %2\$s")
|
||||
|
||||
death("otm_become_android.player", "%1\$s потерял свою человечность, когда %2\$s пытался образумить их")
|
||||
death("otm_become_humane.player", "%1\$s восстановил свою человечность, когда %2\$s пытался образумить их")
|
||||
@ -551,43 +481,12 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
|
||||
add(MBlocks.MATTER_ENTANGLER, "Квантовый запутыватель материи")
|
||||
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.CRUDE]!!, "Самобытный энергетический кабель")
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.REGULAR]!!, "Энергетический кабель")
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.ADVANCED]!!, "Улучшенный энергетический кабель")
|
||||
add(MBlocks.ENERGY_CABLES[CablesConfig.E.SUPERCONDUCTOR]!!, "Сверхпроводящий энергетический кабель")
|
||||
|
||||
addBlock(MBlocks.COBBLESTONE_GENERATOR.values, "Генератор булыжника")
|
||||
add(MBlocks.INFINITE_WATER_SOURCE, "Неиссякаемый источник воды")
|
||||
add(MBlocks.INFINITE_WATER_SOURCE, "desc", "Выталкивает воду в соседние блоки автоматически")
|
||||
|
||||
add(MBlocks.BLACK_HOLE, "Локализированная сингулярная точка аномального искажения пространства-времени")
|
||||
|
||||
add(MBlocks.FLYWHEEL_SHAFT, "Маховый вал")
|
||||
add(MBlocks.FLYWHEEL_SHAFT, "desc", "Устанавливается между подшипников")
|
||||
|
||||
add(MBlocks.FLYWHEEL_BEARING, "Маховый подшипник")
|
||||
add(MBlocks.FLYWHEEL_BEARING, "desc", "Заменяет центральный блок корпуса сверху и снизу")
|
||||
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "Блок управления маховым хранилищем энергии")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc", "Мультиблок, который требует подшипники, корпус, вал, блоки генераторов и ядро из материала на ваше усмотрение")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc2", "Имеет неограниченную высоту, с нижним порогом в 4 блока")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc3", "Строится как параллелепипед с основной в 5 на 5 блоков")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc4", "Использует энергетические *интерфейсы* как порты ввода вывода, и они должны быть установлены на том же")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc5", "уровне, что и блоки генераторов")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc6", "Важно: должен быть установлен в стене по середине на том же уровне, где находится ядро,")
|
||||
add(MBlocks.FLYWHEEL_BATTERY, "desc7", "иначе говоря, он заменяет блок корпуса на высоте одного блока относительно 'пола' структуры")
|
||||
|
||||
add(MBlocks.FLYWHEEL_HOUSING, "Корпус махового хранилища энергии")
|
||||
add(MBlocks.FLYWHEEL_HOUSING, "desc", "Мультиблок структура с размерностью 5xNx5")
|
||||
|
||||
add(MBlocks.GENERATOR_BLOCK, "Генераторный блок")
|
||||
add(MBlocks.GENERATOR_BLOCK, "desc", "Часть мультиблока, безопасна в качестве декорации")
|
||||
|
||||
add(MBlocks.MODULAR_FRAME, "Модульный каркас")
|
||||
add(MBlocks.HEAVY_MODULAR_FRAME, "Тяжёлый модульный каркас")
|
||||
|
||||
add(MBlocks.ENERGY_INPUT_INTERFACE, "Входной энергетический интерфейс")
|
||||
add(MBlocks.ENERGY_OUTPUT_INTERFACE, "Выходной энергетический интерфейс")
|
||||
add(MBlocks.BLACK_HOLE_GENERATOR, "Генератор энергии ускорением материи")
|
||||
|
||||
add(MBlocks.ENERGY_INPUT_HATCH, "Входной энергетический клапан")
|
||||
add(MBlocks.ITEM_INPUT_HATCH, "Входной предметный клапан")
|
||||
@ -596,13 +495,6 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.ITEM_OUTPUT_HATCH, "Выходной предметный клапан")
|
||||
add(MBlocks.MATTER_OUTPUT_HATCH, "Выходной клапан материи")
|
||||
|
||||
add(MBlocks.BLACK_HOLE_GENERATOR, "Генератор энергии ускорением материи")
|
||||
add(MBlocks.TRITANIUM_HULL, "Тритановый корпус")
|
||||
add(MBlocks.TRITANIUM_HULL, "desc", "Прочная часть мультиблока, безопасна в качестве декорации")
|
||||
add(MBlocks.MATTER_INJECTOR, "Инжектор материи")
|
||||
add(MBlocks.ANTIMATTER_INJECTOR, "Инжектор анти-материи")
|
||||
add(MBlocks.HIGH_ENERGY_PARTICLE_COLLECTOR, "Коллектор высокоэнергичных частиц")
|
||||
|
||||
add(MBlocks.DEV_CHEST, "Сундук разработчика")
|
||||
add(MBlocks.DEV_CHEST, "desc", "Хранит все предметы, которые есть в игре")
|
||||
add(MBlocks.PAINTER, "Стол маляра")
|
||||
@ -622,8 +514,6 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.HOLO_SIGN, "desc", "Многострочная, крашеная и светящееся, табличка")
|
||||
|
||||
add(MBlocks.TRITANIUM_INGOT_BLOCK, "Блок слитков тритана")
|
||||
add(MBlocks.WITHERED_STEEL_BLOCK, "Блок иссушенной стали")
|
||||
add(MBlocks.ROFLITE_ALLOY_BLOCK, "Блок рофлитового сплава")
|
||||
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "Счётчик энергии")
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc", "Ограничивает направление передачи энергии;")
|
||||
@ -631,12 +521,9 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc3", "Собирает статистику о переданной через себя энергии;")
|
||||
addBlock(MBlocks.ENERGY_COUNTER.values, "desc4", "Отображает текущую активность передачи энергии на своём экране")
|
||||
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "facing", "Сторона входа: %s")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "switch", "Сменить сторону входа")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "limit", "Лимит ввода/вывода. -1 для отключения лимитов")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "display_this", "Отображать эти данные на экране блока")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "do_pull", "Забирать энергию на входе и выталкивать её на выходе")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "dont_pull", "Не забирать энергию на входе")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "Facing", "сторона входа: %s")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "Switch", "сменить сторону входа")
|
||||
add(MBlocks.ENERGY_COUNTER[null]!!, "Limit", "лимит ввода/вывода. -1 для отключения лимитов")
|
||||
|
||||
addBlock(MBlocks.CHEMICAL_GENERATOR.values, "Химический генератор")
|
||||
addBlock(MBlocks.CHEMICAL_GENERATOR.values, "desc", "Генерирует энергию сжигая твёрдое топливо")
|
||||
@ -654,19 +541,20 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
addBlock(MBlocks.POWERED_SMOKER.values, "desc", "Позволяет обрабатывать рецепты коптильни используя энергию")
|
||||
|
||||
addBlock(MBlocks.ENERGY_SERVO.values, "Энергетическая помпа")
|
||||
addBlock(MBlocks.ENERGY_SERVO.values, "desc", "Заряжает, разряжает и передаёт энергию между предметами")
|
||||
addBlock(MBlocks.ENERGY_SERVO.values, "desc", "заряжает, разряжает и передаёт энергию между предметами")
|
||||
|
||||
add(MBlocks.CARBON_FIBRE_BLOCK, "Блок углеродных трубок")
|
||||
add(MBlocks.METAL_MESH, "Металлическая решётка")
|
||||
add(MBlocks.METAL_MESH, "Блок металлической сетки")
|
||||
add(MBlocks.METAL_JUNK, "Металлический хлам")
|
||||
add(MBlocks.METAL_JUNK, "desc", "Бесполезный хлам, или нет?")
|
||||
|
||||
add(MBlocks.TRITANIUM_STRIPED_BLOCK, "Тритановый блок с полоской")
|
||||
add(MBlocks.TRITANIUM_STRIPED_STAIRS, "Тритановые ступеньки с полоской")
|
||||
add(MBlocks.TRITANIUM_STRIPED_SLAB, "Тритановая плита с полоской")
|
||||
add(MBlocks.TRITANIUM_STRIPED_WALL, "Тритановая ограда с полоской")
|
||||
add(MBlocks.TRITANIUM_ORE, "Тритановая руда")
|
||||
add(MBlocks.DILITHIUM_ORE, "Дилитевая руда")
|
||||
add(MBlocks.DEEPSLATE_TRITANIUM_ORE, "Тританоносный глубинный сланец")
|
||||
add(MBlocks.DEEPSLATE_DILITHIUM_ORE, "Глубинный сланец со вкраплением дилития")
|
||||
add(MBlocks.TRITANIUM_RAW_BLOCK, "Блок рудного тритана")
|
||||
add(MBlocks.DILITHIUM_CRYSTAL_BLOCK, "Блок кристалла дилития")
|
||||
|
||||
add(MBlocks.STORAGE_CABLE, "Кабель хранилища")
|
||||
addBlock(MBlocks.STORAGE_POWER_SUPPLIER.values, "Подстанция сети хранилища")
|
||||
@ -676,23 +564,18 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
|
||||
add(MBlocks.GRAVITATION_STABILIZER, "Стабилизатор пространства-времени")
|
||||
add(MBlocks.GRAVITATION_STABILIZER_LENS, "Линза стабилизатора пространства-времени")
|
||||
add(MBlocks.GRAVITATION_STABILIZER, "desc", "Уменьшает искажение пространства-времени сингулярностей")
|
||||
add(MBlocks.GRAVITATION_STABILIZER, "desc2", "Имейте ввиду, что несколько стабилизаторов создают экспоненциальный эффект")
|
||||
add(MBlocks.GRAVITATION_STABILIZER, "desc3", "Слишком слабое искажение пространства-времени приведёт к быстрому 'испарению' сингулярности!")
|
||||
add(MBlocks.GRAVITATION_STABILIZER, "Desc", "Уменьшает искажение пространства-времени сингулярностей")
|
||||
add(MBlocks.GRAVITATION_STABILIZER, "Desc2", "Имейте ввиду, что несколько стабилизаторов создают экспоненциальный эффект")
|
||||
add(MBlocks.GRAVITATION_STABILIZER, "Desc3", "Слишком слабое искажение пространства-времени приведёт к быстрому 'испарению' сингулярности!")
|
||||
|
||||
add(MBlocks.PHANTOM_ATTRACTOR, "Приманщик фантомов")
|
||||
add(MBlocks.PHANTOM_ATTRACTOR, "desc", "Приманивает фантомов в ночное время")
|
||||
|
||||
add(MBlocks.REDSTONE_LAMP_INVERTED, "Лампа (инвертированный сигнал)")
|
||||
add(MBlocks.REINFORCED_REDSTONE_LAMP, "Укреплённая лампа")
|
||||
add(MBlocks.REINFORCED_REDSTONE_LAMP_INVERTED, "Укреплённая лампа (инвертированный сигнал)")
|
||||
add(MBlocks.PHANTOM_ATTRACTOR, "Desc", "приманивает фантомов в ночное время")
|
||||
|
||||
add(MBlocks.LABORATORY_LAMP, "Лабораторная лампа")
|
||||
add(MBlocks.LABORATORY_LAMP, "description", "Освещает на несколько блоков в направлении своей лампы, с переключателем красного камня")
|
||||
add(MBlocks.LABORATORY_LAMP, "Description", "освещает на несколько блоков в направлении своей лампы, с переключателем красного камня")
|
||||
add(MBlocks.LABORATORY_LAMP_INVERTED, "Лабораторная лампа (инвентированный сигнал)")
|
||||
add(MBlocks.DANGER_STRIPE_BLOCK, "Полоски 'опасность'")
|
||||
add(MBlocks.METAL_BEAM, "Металлическая опора")
|
||||
add(MBlocks.METAL_BEAM_CENTER, "Металлическая опора (середина)")
|
||||
|
||||
add(MBlocks.TRITANIUM_DOOR[null]!!, "Тритановая дверь")
|
||||
add(MBlocks.TRITANIUM_DOOR[null]!!, "description0", "Взрывоустойчивая дверь с засовом красного камня...")
|
||||
@ -703,17 +586,14 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
||||
add(MBlocks.TRITANIUM_TRAPDOOR[null]!!, "description1", FEELING_SAFE_NOW)
|
||||
|
||||
add(MBlocks.TRITANIUM_BARS, "Тритановая решётка")
|
||||
add(MBlocks.METAL_RAILING, "Металлические перила")
|
||||
|
||||
for (block in MBlocks.TRITANIUM_ANVIL)
|
||||
add(block, "Тритановая наковальня")
|
||||
}
|
||||
}
|
||||
|
||||
private fun items(provider: MatteryLanguageProvider) {
|
||||
with(provider.russian) {
|
||||
add(MItems.REDSTONE_INTERACTOR, "Ключ красного камня")
|
||||
add(MItems.REDSTONE_INTERACTOR, "desc", "'Посылает' сигнал красного камня из блока, с которым взаимодействует")
|
||||
add(MItems.REDSTONE_INTERACTOR, "desc1", "Другими словами, позволяет активировать механизмы красного камня, такие как железные двери")
|
||||
add(MItems.REDSTONE_INTERACTOR, "desc2", "Для настройки таймера используйте будучи крадясь")
|
||||
|
||||
add(MItems.PROCEDURAL_BATTERY, "Загадочный аккумулятор")
|
||||
add(MItems.PROCEDURAL_BATTERY, "desc", "Данные аккумуляторы можно найти в подземельях, со случайными характеристиками")
|
||||
|
||||
@ -745,7 +625,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.ESSENCE_SERVO, "desc2", "Может использоваться как инструмент для ручной перекачки эссенции")
|
||||
|
||||
add(MItems.NUTRIENT_PASTE, "Питательная паста")
|
||||
add(MItems.IMPERFECT_BREAD, "Несовершенный хлеб")
|
||||
|
||||
add(MItems.FLUID_CAPSULE, "Жидкостная капсула")
|
||||
add(MItems.FLUID_CAPSULE, "named", "Жидкостная капсула (%s)")
|
||||
@ -766,7 +645,7 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.BATTERY_CREATIVE, "Творческий аккумулятор")
|
||||
|
||||
add(MItems.QUANTUM_BATTERY, "Квантовый аккумулятор")
|
||||
add(MItems.QUANTUM_CAPACITOR, "Квантовый аккумулятор-конденсатор")
|
||||
add(MItems.QUANTUM_CAPACITOR, "Квантовый аккумулятор-накопитель")
|
||||
add(MItems.QUANTUM_BATTERY_CREATIVE, "Творческий квантовый аккумулятор")
|
||||
|
||||
add(MItems.TRITANIUM_SWORD, "Тритановый меч")
|
||||
@ -777,8 +656,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.TRITANIUM_SHEARS, "Тритановые ножницы")
|
||||
add(MItems.TRITANIUM_SHIELD, "Тритановый щит")
|
||||
|
||||
add(MItems.WITHERED_STEEL_SWORD, "Меч из иссушенной стали")
|
||||
|
||||
add(MItems.TRITANIUM_HELMET, "Тритановый шлем")
|
||||
add(MItems.TRITANIUM_CHESTPLATE, "Тритановый нагрудник")
|
||||
add(MItems.TRITANIUM_PANTS, "Тритановые поножи")
|
||||
@ -791,19 +668,11 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
|
||||
add(MItems.TRITANIUM_DUST, "Тритановая пыль")
|
||||
add(MItems.TRITANIUM_INGOT, "Тритановый слиток")
|
||||
add(MItems.DILITHIUM_CRYSTAL, "Дилитевый кристалл")
|
||||
add(MItems.WITHERED_STEEL, "Слиток иссушенной стали")
|
||||
add(MItems.ROFLITE_ALLOY_INGOT, "Слиток рофлитового сплава")
|
||||
add(MItems.TRITANIUM_NUGGET, "Тритановый самородок")
|
||||
add(MItems.MATTER_IO_PORT, "Порт ввода/вывода материи")
|
||||
add(MItems.MATTER_TRANSFORM_MATRIX, "Матрица преобразования материи")
|
||||
add(MItems.ANTIMATTER_TRANSFORM_MATRIX, "Матрица преобразования антиматерии")
|
||||
add(MItems.ANTIMATTER_TRANSFORM_MATRIX, "desc", "Могут быть найдены в городах Края")
|
||||
add(MItems.ENERGY_BUS, "Шина питания")
|
||||
add(MItems.ELECTRIC_PARTS, "Электрические части")
|
||||
add(MItems.ELECTRIC_PARTS, "desc", "Конденсаторы, резисторы, диоды, перемычки...")
|
||||
add(MItems.MECHANICAL_PARTS, "Механические части")
|
||||
add(MItems.MECHANICAL_PARTS, "desc", "Подшипники, шестерёнки, муфты, осевые валы...")
|
||||
add(MItems.MACHINE_FRAME, "Каркас механизма")
|
||||
add(MItems.TRITANIUM_PLATE, "Тритановая пластина")
|
||||
add(MItems.IRON_PLATE, "Железная пластина")
|
||||
@ -820,14 +689,10 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.ELECTROMOTOR, "Электромотор")
|
||||
add(MItems.MIRROR_COMPOUND, "Набор выплавки зеркала")
|
||||
add(MItems.MIRROR, "Зеркало")
|
||||
add(MItems.MIRROR, "desc", "Я могу очень отчётливо видеть своё отражение в этом зеркале")
|
||||
add(MItems.MIRROR, "description", "Я могу очень отчётливо видеть своё отражение в этом зеркале")
|
||||
add(MItems.REINFORCED_TRITANIUM_PLATE, "Укреплённая тритановая пластина")
|
||||
add(MItems.REINFORCED_TRITANIUM_PLATE, "desc", "Бронированная пластина, усиленная чтобы выдержать большие кинетические силы")
|
||||
add(MItems.REINFORCED_IRON_PLATE, "Укреплённая железная пластина")
|
||||
add(MItems.REINFORCED_IRON_PLATE, "desc", "Более надёжная и прочная железная пластина")
|
||||
add(MItems.ARMOR_ASSEMBLY, "Стройка брони")
|
||||
add(MItems.REINFORCED_TRITANIUM_PLATE, "description", "Бронированная пластина, усиленная что бы выдержать большие кинетические силы")
|
||||
add(MItems.CARBON_MESH, "Углеродная сетка")
|
||||
add(MItems.DISPLAY_SCREEN, "Экран дисплея")
|
||||
|
||||
add(MItems.GRAVITATIONAL_DISRUPTOR, "Маяк уравнения пространства-времени")
|
||||
|
||||
@ -847,7 +712,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.PILL_HUMANE, "Пилюля человечности")
|
||||
add(MItems.PILL_OBLIVION, "Пилюля сброса андроида до заводских настроек")
|
||||
add(MItems.PILL_HEAL, "Медицинская пилюля")
|
||||
add(MItems.PILL_NOT_NORMAL, "Не/Нормальная пилюля")
|
||||
|
||||
add(MItems.MATTER_CAPACITOR_PARTS, "Части накопителя материи")
|
||||
add(MItems.MATTER_CAPACITOR_BASIC, "Простой накопитель материи")
|
||||
@ -861,24 +725,13 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.ENERGY_SWORD, "desc3", "Всегда наносит полный урон по площади если имеет заряд")
|
||||
add(MItems.ENERGY_SWORD, "desc4", "Зачарование 'Разящий клинок' не имеет никакого эффекта на данном оружии")
|
||||
|
||||
add(MItems.FALLING_SUN, "◄ Падающее Солнце ►")
|
||||
add(MItems.FALLING_SUN, "desc", "Прототип,требует энергию для работы")
|
||||
add(MItems.FALLING_SUN, "desc2", "Наносит дополнительный урон андроидам если имеет заряд")
|
||||
add(MItems.FALLING_SUN, "desc3", "Всегда наносит полный урон по площади если имеет заряд")
|
||||
add(MItems.FALLING_SUN, "desc4", "Зачарование 'Разящий клинок' не имеет никакого эффекта на данном оружии")
|
||||
|
||||
add(MItems.PORTABLE_CONDENSATION_DRIVE, "Portable Condensation Drive")
|
||||
add(MItems.PORTABLE_DENSE_CONDENSATION_DRIVE, "Portable Dense Condensation Drive")
|
||||
add(MItems.PLASMA_RIFLE, "Плазменная винтовка")
|
||||
add(MItems.TRITANIUM_ORE_CLUMP, "Рудный тритан")
|
||||
add(MItems.PATTERN_DRIVE_NORMAL, "Диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_DOUBLE, "Двухуровневый диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_TRIPLE, "Трёхуровневый диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_QUAD, "Четырёхуровневый диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE, "Творческий диск шаблонов")
|
||||
|
||||
add(MItems.GOLD_DISK, "Золотой диск")
|
||||
add(MItems.GOLD_DISK, "single_item", "Золотой диск (%s)")
|
||||
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "Вездесущий диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "description1", "Предмет режима творчества")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "description2", "Содержит в себе шаблоны всех предметов, которые имеют значение материи")
|
||||
@ -928,18 +781,6 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.CHEST_UPGRADER, "Ящикатор")
|
||||
add(MItems.CHEST_UPGRADER, "desc", "Заменяет установленные сундуки и бочки грузовыми ящиками с сохранением содержимого")
|
||||
add(MItems.CHEST_UPGRADER, "desc2", "Удерживайте необходимые ящики в противоположной руке")
|
||||
|
||||
add(MItems.CONFIGURATOR, "Конфигуратор")
|
||||
add(MItems.CONFIGURATOR, "desc", "Копирует настройки между блоками")
|
||||
add(MItems.CONFIGURATOR, "desc2", "Использование крадясь на блоке копирует настройки, простое использование применяет")
|
||||
add(MItems.CONFIGURATOR, "desc3", "Используйте крадясь на воздухе для очистки")
|
||||
add(MItems.CONFIGURATOR, "desc_saved", "Сохранены настройки для: %s")
|
||||
|
||||
add(MItems.BREAD_MONSTER_SPAWN_EGG, "Яйцо призыва хлебного монстра")
|
||||
add(MEntityTypes.BREAD_MONSTER, "Хлебный монстр")
|
||||
|
||||
add(MItems.LOADER_SPAWN_EGG, "Яйцо призыва погрузчика")
|
||||
add(MEntityTypes.LOADER, "Погрузчик")
|
||||
}
|
||||
}
|
||||
|
||||
@ -982,70 +823,6 @@ private fun androidFeatures(provider: MatteryLanguageProvider) {
|
||||
|
||||
private fun gui(provider: MatteryLanguageProvider) {
|
||||
with(provider.russian) {
|
||||
gui("quickmove_from.restock", "Быстрое пополнение из хранилища")
|
||||
gui("quickmove_from.restock_with_move", "Быстрое складирование из хранилища")
|
||||
gui("quickmove_from.move", "Взять всё")
|
||||
|
||||
gui("quickmove_to.restock", "Быстрое пополнение в хранилище")
|
||||
gui("quickmove_to.restock_with_move", "Быстрое складирование в хранилище")
|
||||
gui("quickmove_to.move", "Переместить всё")
|
||||
gui("quickmove.exchange", "Умный обмен с хранилищем")
|
||||
gui("quickmove.exchange.desc", "Слоты с фильтрами заполняются до максимума, всё остальное быстро складируется из экзопака")
|
||||
|
||||
gui("quickmove_hint", "Правый клик чтоб увидеть все варианты")
|
||||
|
||||
gui("exopack.accept_wireless_charge", "Принимать заряд от беспроводных зарядников")
|
||||
gui("exopack.dont_accept_wireless_charge", "Не принимать заряд от беспроводных зарядников")
|
||||
|
||||
gui("charge_androids", "Заряжать андроидов")
|
||||
gui("dont_charge_androids", "Не заряжать андроидов")
|
||||
|
||||
gui("charge_exopacks", "Заряжать экзопаки")
|
||||
gui("dont_charge_exopacks", "Не заряжать экзопаки")
|
||||
|
||||
gui("multiblock.formed", "Мультиблок сформирован: %s")
|
||||
|
||||
gui("flywheel.current_loss_t", "Текущая потеря энергии в тик:")
|
||||
gui("flywheel.current_loss_s", "Текущая потеря энергии в секунду:")
|
||||
gui("flywheel.core_material", "Материал сердечника:")
|
||||
gui("flywheel.core_material_count", "(Используется блоков сердечника: %s)")
|
||||
|
||||
gui("flow_direction_set", "Направление потока установлено на %s")
|
||||
gui("tick_timer_set", "Таймер установлен на %s тиков")
|
||||
|
||||
gui("config_copied", "Скопированы настройки для %s")
|
||||
gui("config_pasted", "Настройки применены")
|
||||
gui("config_cleared", "Настройки очищены")
|
||||
gui("config_missing", "Нет настроек для применения")
|
||||
|
||||
gui("black_hole_generator.help0", "Генерирует электричество используя угловое ускорение сингулярностей")
|
||||
gui("black_hole_generator.help1", "Чем сильнее гравитационное поле сингулярности, тем больше генерация!")
|
||||
gui("black_hole_generator.help2", "Использование стабилизаторов пространства-времени ослабляет гравитационное поле, снижая генерацию")
|
||||
gui("black_hole_generator.help3", "Данный генератор единственный способ 'безопасно' избавиться от сингулярности, полностью лишив её накопленной массы в режиме подпитки антиматерией")
|
||||
|
||||
gui("black_hole_generator.injection_rate.mode", "Скорость подпитки")
|
||||
gui("black_hole_generator.target_mass.mode", "Целевая масса")
|
||||
|
||||
gui("black_hole_generator.sustain.mode", "Поддерживать массу")
|
||||
gui("black_hole_generator.sustain.desc", "Поддерживать массу сингулярности на заданном значении, подпитывая материей или антиматерией по мере необходимости")
|
||||
|
||||
gui("black_hole_generator.matter_only.mode", "Подпитка материей")
|
||||
gui("black_hole_generator.matter_only.desc", "Подпитывать только материей, существенно снизив генерацию энергии, но увеличивая массу сингулярности, а так же дальнейшую выработку энергии")
|
||||
|
||||
gui("black_hole_generator.antimatter_only.mode", "Подпитка антиматерией")
|
||||
gui("black_hole_generator.antimatter_only.desc", "Подпитывать только антиматерией, существенно увеличив генерацию энергии, но уменьшая массу сингулярности, а так же дальнейшую выработку энергии")
|
||||
|
||||
gui("draw_multiblock_guide", "Отображать помощника постройки")
|
||||
gui("ago", "%s тому назад")
|
||||
|
||||
gui("time.short.5s", "5с")
|
||||
gui("time.short.15s", "15с")
|
||||
gui("time.short.1m", "1м")
|
||||
gui("time.short.10m", "10м")
|
||||
gui("time.short.1h", "1ч")
|
||||
gui("time.short.6h", "6ч")
|
||||
gui("time.short.24h", "24ч")
|
||||
|
||||
gui("part_of_multiblock", "Часть мультиблока, бесполезен сам по себе")
|
||||
gui("quicksearch", "Быстрый поиск...")
|
||||
|
||||
@ -1179,9 +956,7 @@ private fun gui(provider: MatteryLanguageProvider) {
|
||||
gui("matter_panel.complexity", "Общая сложность: %s")
|
||||
|
||||
gui("experience", "%s очков опыта")
|
||||
gui("experience_with_limit", "%s / %s очков опыта")
|
||||
gui("experience_levels", "%s уровней опыта")
|
||||
gui("experience_levels_with_limit", "%s / %s уровней опыта")
|
||||
|
||||
gui("experience.store", "Передать %s уровней опыта")
|
||||
gui("experience.store_all", "Передать все уровни опыта")
|
||||
@ -1219,13 +994,6 @@ private fun jade(provider: MatteryLanguageProvider) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun maps(provider: MatteryLanguageProvider) {
|
||||
with(provider.russian) {
|
||||
map("laboratory", "Карта лаборатории")
|
||||
map("wreckage", "Карта кораблекрушения")
|
||||
}
|
||||
}
|
||||
|
||||
fun AddRussianLanguage(provider: MatteryLanguageProvider) {
|
||||
decoratives(provider)
|
||||
blocks(provider)
|
||||
@ -1238,5 +1006,4 @@ fun AddRussianLanguage(provider: MatteryLanguageProvider) {
|
||||
death(provider)
|
||||
androidFeatures(provider)
|
||||
jade(provider)
|
||||
maps(provider)
|
||||
}
|
||||
|
@ -1,53 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.level.storage.loot.entries.LootItem
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
|
||||
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addAdvancementLoot(lootTables: LootTables) {
|
||||
lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLootTable("research_all_android")) {
|
||||
lootPool {
|
||||
add(LootItem.lootTableItem(MItems.ExopackUpgrades.INVENTORY_UPGRADE_HUGE))
|
||||
}
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLootTable("tritanium_block3")) {
|
||||
lootPool { item(Items.WHITE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.ORANGE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.MAGENTA_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.LIGHT_BLUE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.YELLOW_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.LIME_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.PINK_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.GRAY_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.LIGHT_GRAY_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.CYAN_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.PURPLE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.BLUE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.BROWN_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.GREEN_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.RED_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.BLACK_DYE) { setCount(8) } }
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLootTable("tritanium_block4")) {
|
||||
lootPool { item(Items.WHITE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.ORANGE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.MAGENTA_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.LIGHT_BLUE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.YELLOW_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.LIME_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.PINK_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.GRAY_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.LIGHT_GRAY_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.CYAN_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.PURPLE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.BLUE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.BROWN_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.GREEN_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.RED_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.BLACK_DYE) { setCount(64) } }
|
||||
}
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf
|
||||
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
fun addDecorativeLoot(lootTables: LootTables) {
|
||||
lootTables.dropsSelf(MRegistry.DECORATIVE_CRATE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MRegistry.COMPUTER_TERMINAL.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.STAR_CHAIR.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.CARGO_CRATES.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_BLOCK.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_WALL.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STAIRS.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MRegistry.TRITANIUM_SLAB.allBlocks.values)
|
||||
lootTables.dropsSelf(MRegistry.VENT.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.VENT_ALTERNATIVE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.FLOOR_TILES.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.UNREFINED_FLOOR_TILES.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_BLOCK.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MRegistry.FLOOR_TILES_STAIRS.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MRegistry.FLOOR_TILES_SLAB.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.CARBON_FIBRE_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.METAL_MESH) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.METAL_RAILING) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.METAL_JUNK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_RAW_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_STRIPED_BLOCK.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_STRIPED_WALL.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_STRIPED_STAIRS.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MBlocks.TRITANIUM_STRIPED_SLAB.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.LABORATORY_LAMP) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.LABORATORY_LAMP_INVERTED) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.DANGER_STRIPE_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.METAL_BEAM) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_INGOT_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_BARS) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.WITHERED_STEEL_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_HULL) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.GENERATOR_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.MODULAR_FRAME) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.HEAVY_MODULAR_FRAME) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.FLYWHEEL_SHAFT) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.FLYWHEEL_HOUSING) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.FLYWHEEL_BEARING) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.ENGINE) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.REDSTONE_LAMP_INVERTED) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.REINFORCED_REDSTONE_LAMP) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.REINFORCED_REDSTONE_LAMP_INVERTED) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
MBlocks.TRITANIUM_ANVIL.values.forEach { it.forEach { lootTables.dropsSelf(it) { condition(ExplosionCondition.survivesExplosion()) } } }
|
||||
|
||||
for (door in MBlocks.TRITANIUM_TRAPDOOR.values)
|
||||
lootTables.dropsSelf(door) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
for (door in MBlocks.TRITANIUM_DOOR.values) {
|
||||
lootTables.block(door) {
|
||||
item(door) {
|
||||
blockStateCondition(door) {
|
||||
this[BlockStateProperties.DOUBLE_BLOCK_HALF] = DoubleBlockHalf.LOWER
|
||||
}
|
||||
}
|
||||
|
||||
condition(ExplosionCondition.survivesExplosion())
|
||||
}
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.world.level.storage.loot.functions.SetComponentsFunction
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
|
||||
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
||||
import ru.dbotthepony.mc.otm.registry.game.MDataComponentTypes
|
||||
import ru.dbotthepony.mc.otm.registry.game.MEntityTypes
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addEntityLoot(loot: LootTables) {
|
||||
loot.builder(LootContextParamSets.ENTITY, modLootTable("entities/loader")) {
|
||||
lootPool {
|
||||
item(MItems.MECHANICAL_PARTS) {
|
||||
setCount(1, 3)
|
||||
setWeight(7)
|
||||
}
|
||||
item(MItems.ELECTRIC_PARTS) {
|
||||
setCount(1, 1)
|
||||
setWeight(1)
|
||||
}
|
||||
setRolls(1)
|
||||
}
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.ENTITY, MEntityTypes.BREAD_MONSTER.defaultLootTable) {
|
||||
lootPool {
|
||||
item(MItems.IMPERFECT_BREAD) {
|
||||
apply(SetComponentsFunction.setComponent(MDataComponentTypes.INERT, true))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.data.DataGenerator
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
|
||||
import net.neoforged.neoforge.common.data.GlobalLootModifierProvider
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import net.minecraftforge.common.data.GlobalLootModifierProvider
|
||||
import ru.dbotthepony.mc.otm.data.loot.LootPoolAppender
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import java.util.Arrays
|
||||
@ -51,7 +51,7 @@ fun PlainLootAppender(
|
||||
vararg items: Pair<ItemStack, Double>
|
||||
) = PlainLootAppender(conditions, Arrays.stream(items))
|
||||
|
||||
class LootModifiers(generator: GatherDataEvent) : GlobalLootModifierProvider(generator.generator.packOutput, generator.lookupProvider, DataGen.MOD_ID) {
|
||||
class LootModifiers(generator: DataGenerator) : GlobalLootModifierProvider(generator, DataGen.MOD_ID) {
|
||||
private val lambdas = ArrayList<(LootModifiers) -> Unit>()
|
||||
|
||||
fun lambda(lambda: (LootModifiers) -> Unit) {
|
||||
|
@ -1,30 +1,22 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.util.valueproviders.UniformInt
|
||||
import net.minecraft.world.entity.EntityType
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.level.storage.loot.BuiltInLootTables
|
||||
import net.minecraft.world.level.storage.loot.LootTable
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
|
||||
import net.neoforged.neoforge.common.loot.AddTableLootModifier
|
||||
import net.neoforged.neoforge.common.loot.LootTableIdCondition
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.data.world.UniformDecimal
|
||||
import net.minecraftforge.common.loot.LootTableIdCondition
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.data.UniformDecimal
|
||||
import ru.dbotthepony.mc.otm.data.condition.ChanceWithPlaytimeCondition
|
||||
import ru.dbotthepony.mc.otm.data.condition.HasExoPackCondition
|
||||
import ru.dbotthepony.mc.otm.data.condition.ItemInInventoryCondition
|
||||
import ru.dbotthepony.mc.otm.data.condition.KilledByRealPlayerOrIndirectly
|
||||
import ru.dbotthepony.mc.otm.data.loot.LootPoolAppender
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
||||
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
||||
import ru.dbotthepony.mc.otm.item.matter.GoldDiskItem
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
@Suppress("FunctionName")
|
||||
fun LootTableIdCondition(location: String): LootItemCondition {
|
||||
@ -36,11 +28,6 @@ fun LootTableIdCondition(location: ResourceLocation): LootItemCondition {
|
||||
return LootTableIdCondition.Builder(location).build()
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
fun LootTableIdCondition(location: ResourceKey<LootTable>): LootItemCondition {
|
||||
return LootTableIdCondition.Builder(location.location()).build()
|
||||
}
|
||||
|
||||
fun addLootModifiers(it: LootModifiers) {
|
||||
it.add("dungeon_exopack", LootPoolAppender(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.SIMPLE_DUNGEON)),
|
||||
@ -69,11 +56,6 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(4, 10)))
|
||||
},
|
||||
|
||||
singleItem(MItems.GOLD_DISK) {
|
||||
chanceCondition(0.1)
|
||||
apply(GoldDiskItem.patterns(DataGen.random, MItems.IMPERFECT_BREAD))
|
||||
},
|
||||
|
||||
singleItem(MItems.PROCEDURAL_BATTERY) {
|
||||
chanceCondition(0.15)
|
||||
|
||||
@ -130,11 +112,6 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
chanceCondition(0.1)
|
||||
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(27, 56), UniformInt.of(2, 6)))
|
||||
},
|
||||
|
||||
singleItem(MItems.GOLD_DISK) {
|
||||
chanceCondition(0.15)
|
||||
apply(GoldDiskItem.patterns(DataGen.random, Items.ENDER_PEARL))
|
||||
},
|
||||
))
|
||||
|
||||
it.add("dungeon_pill", PlainLootAppender(
|
||||
@ -142,7 +119,6 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
|
||||
ItemStack(MItems.PILL_HEAL, 2) to 0.5,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.75,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 3) to 0.25,
|
||||
))
|
||||
|
||||
it.add("mineshaft_pill", PlainLootAppender(
|
||||
@ -150,7 +126,6 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.04,
|
||||
ItemStack(MItems.PILL_HEAL, 2) to 0.1,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.4,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 3) to 0.25,
|
||||
))
|
||||
|
||||
it.add("mineshaft_nutrient_paste", PlainLootAppender(
|
||||
@ -164,13 +139,11 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.DESERT_PYRAMID)),
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.15,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.3,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 3) to 0.25,
|
||||
))
|
||||
|
||||
it.add("jungle_temple_pill", PlainLootAppender(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.JUNGLE_TEMPLE)),
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.5,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 8) to 0.2,
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.5
|
||||
))
|
||||
|
||||
it.add("end_city_modifications", PlainLootAppender(
|
||||
@ -178,8 +151,7 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_ANDROID, 1) to 0.15,
|
||||
ItemStack(MItems.PILL_HUMANE, 1) to 0.3,
|
||||
ItemStack(MItems.PILL_OBLIVION, 1) to 0.5,
|
||||
ItemStack(MItems.ZPM_BATTERY, 1) to 0.004,
|
||||
ItemStack(MItems.ANTIMATTER_TRANSFORM_MATRIX, 1) to 0.5,
|
||||
ItemStack(MItems.ZPM_BATTERY, 1) to 0.005,
|
||||
))
|
||||
|
||||
it.add("shipwreck_supply_pill", PlainLootAppender(
|
||||
@ -189,7 +161,6 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.6,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.6,
|
||||
ItemStack(MItems.PILL_HEAL, 1) to 0.6,
|
||||
ItemStack(MItems.PILL_NOT_NORMAL, 4) to 0.25,
|
||||
))
|
||||
|
||||
it.add("shipwreck_supply_nutrient_paste", PlainLootAppender(
|
||||
@ -217,16 +188,6 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
ItemStack(MItems.EXOPACK_PROBE)
|
||||
))
|
||||
|
||||
it.add("withered_skeleton_steel_drop", PlainLootAppender(
|
||||
arrayOf(
|
||||
LootTableIdCondition(EntityType.WITHER_SKELETON.defaultLootTable),
|
||||
KilledByRealPlayerOrIndirectly
|
||||
),
|
||||
|
||||
ItemStack(MItems.WITHERED_STEEL, 1) to 0.15,
|
||||
ItemStack(MItems.WITHERED_STEEL, 2) to 0.1
|
||||
))
|
||||
|
||||
it.add("wither_exosuit_upgrades", BasicLootAppender(
|
||||
arrayOf(
|
||||
LootTableIdCondition(EntityType.WITHER.defaultLootTable),
|
||||
@ -242,29 +203,4 @@ fun addLootModifiers(it: LootModifiers) {
|
||||
),
|
||||
ItemStack(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON),
|
||||
))
|
||||
|
||||
it.add("trials/matter_dust", AddTableLootModifier(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||
modLootTable("trials/matter_dust")
|
||||
))
|
||||
|
||||
it.add("trials/pill", AddTableLootModifier(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||
modLootTable("trials/pill")
|
||||
))
|
||||
|
||||
it.add("trials/exosuit", AddTableLootModifier(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||
modLootTable("trials/exosuit")
|
||||
))
|
||||
|
||||
it.add("trials/battery", AddTableLootModifier(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD)),
|
||||
modLootTable("trials/battery")
|
||||
))
|
||||
|
||||
it.add("trials/zpm_battery", AddTableLootModifier(
|
||||
arrayOf(LootTableIdCondition(BuiltInLootTables.TRIAL_CHAMBERS_REWARD_OMINOUS)),
|
||||
modLootTable("trials/zpm_battery")
|
||||
))
|
||||
}
|
||||
|
@ -3,15 +3,13 @@
|
||||
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import com.mojang.datafixers.util.Pair
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectFunction
|
||||
import net.minecraft.advancements.critereon.StatePropertiesPredicate
|
||||
import net.minecraft.core.HolderLookup
|
||||
import net.minecraft.core.WritableRegistry
|
||||
import net.minecraft.data.DataGenerator
|
||||
import net.minecraft.data.loot.LootTableProvider
|
||||
import net.minecraft.data.loot.LootTableSubProvider
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.util.ProblemReporter
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.SlabBlock
|
||||
@ -21,40 +19,43 @@ import net.minecraft.world.level.storage.loot.LootTable
|
||||
import net.minecraft.world.level.storage.loot.ValidationContext
|
||||
import net.minecraft.world.level.storage.loot.entries.LootItem
|
||||
import net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer
|
||||
import net.minecraft.world.level.storage.loot.functions.CopyNbtFunction
|
||||
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition
|
||||
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.kommons.collect.stream
|
||||
import ru.dbotthepony.mc.otm.core.stream
|
||||
import ru.dbotthepony.mc.otm.data.loot.CopyTileNbtFunction
|
||||
import java.util.concurrent.CompletableFuture
|
||||
import java.util.function.BiConsumer
|
||||
import java.util.function.Consumer
|
||||
import java.util.function.Supplier
|
||||
|
||||
class LootTables(generator: GatherDataEvent) : LootTableProvider(generator.generator.packOutput, setOf() /* because we don't fucking validate you fuck */, listOf() /* because we attach everything after class is constructed duh */, generator.lookupProvider) {
|
||||
private val providersTable = Reference2ObjectArrayMap<LootContextParamSet, HashMap<ResourceKey<LootTable>, () -> LootTable.Builder>>()
|
||||
val registry: CompletableFuture<HolderLookup.Provider> = generator.lookupProvider
|
||||
data class NbtCopy(val source: String, val destination: String, val strategy: CopyNbtFunction.MergeStrategy = CopyNbtFunction.MergeStrategy.REPLACE)
|
||||
|
||||
fun builder(context: LootContextParamSet, id: ResourceKey<LootTable>, provider: LootTable.Builder.() -> Unit) {
|
||||
fun TileNbtCopy(source: String, strategy: CopyNbtFunction.MergeStrategy = CopyNbtFunction.MergeStrategy.REPLACE): NbtCopy {
|
||||
return NbtCopy(source, "BlockEntityTag.$source", strategy)
|
||||
}
|
||||
|
||||
class LootTables(generator: DataGenerator) : LootTableProvider(generator) {
|
||||
private val providersTable = Reference2ObjectArrayMap<LootContextParamSet, HashMap<ResourceLocation, () -> LootTable.Builder>>()
|
||||
|
||||
fun builder(context: LootContextParamSet, id: ResourceLocation, provider: LootTable.Builder.() -> Unit) {
|
||||
provider(context, id) {
|
||||
LootTable.lootTable().also(provider)
|
||||
}
|
||||
}
|
||||
|
||||
fun builder(block: Block, provider: LootPool.Builder.() -> Unit) {
|
||||
singleLootPool(LootContextParamSets.BLOCK, block.lootTable, provider)
|
||||
}
|
||||
|
||||
fun provider(context: LootContextParamSet, id: ResourceKey<LootTable>, provider: () -> LootTable.Builder) {
|
||||
fun provider(context: LootContextParamSet, id: ResourceLocation, provider: () -> LootTable.Builder) {
|
||||
check(providersTable
|
||||
.computeIfAbsent(context, Reference2ObjectFunction { HashMap() })
|
||||
.put(id, provider) == null) { "Duplicate loot pool entry for $id" }
|
||||
}
|
||||
|
||||
override fun getTables(): List<SubProviderEntry> {
|
||||
override fun getTables(): List<Pair<Supplier<Consumer<BiConsumer<ResourceLocation, LootTable.Builder>>>, LootContextParamSet>> {
|
||||
return providersTable.entries.stream().map { entry ->
|
||||
SubProviderEntry({
|
||||
LootTableSubProvider {
|
||||
Pair.of(Supplier<Consumer<BiConsumer<ResourceLocation, LootTable.Builder>>> {
|
||||
Consumer {
|
||||
for ((id, callback) in entry.value) {
|
||||
it.accept(id, callback.invoke())
|
||||
}
|
||||
@ -63,11 +64,7 @@ class LootTables(generator: GatherDataEvent) : LootTableProvider(generator.gener
|
||||
}.toList()
|
||||
}
|
||||
|
||||
override fun validate(
|
||||
writableregistry: WritableRegistry<LootTable>,
|
||||
validationtracker: ValidationContext,
|
||||
`problemreporter$collector`: ProblemReporter.Collector
|
||||
) {}
|
||||
override fun validate(map: MutableMap<ResourceLocation, LootTable>, validationtracker: ValidationContext) {}
|
||||
|
||||
fun createSlabItemTable(block: Block, configurator: LootPoolSingletonContainer.Builder<*>.() -> Unit = {}) {
|
||||
builder(LootContextParamSets.BLOCK, block.lootTable) {
|
||||
@ -104,10 +101,9 @@ class LootTables(generator: GatherDataEvent) : LootTableProvider(generator.gener
|
||||
}
|
||||
}
|
||||
|
||||
fun singleLootPool(context: LootContextParamSet, id: ResourceKey<LootTable>, block: LootPool.Builder.() -> Unit) {
|
||||
fun singleLootPool(context: LootContextParamSet, id: ResourceLocation, block: LootPool.Builder.() -> Unit) {
|
||||
builder(context, id) {
|
||||
withPool(LootPool.lootPool().also(block))
|
||||
setRandomSequence(id.location())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,18 +1,14 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.util.valueproviders.UniformInt
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.level.storage.loot.entries.LootItem
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
|
||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.data.world.UniformDecimal
|
||||
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
||||
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
||||
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addChestLootTables(loot: LootTables) {
|
||||
loot.builder(LootContextParamSets.CHEST, modLootTable("food_box")) {
|
||||
loot.builder(LootContextParamSets.CHEST, modLocation("food_box")) {
|
||||
lootPool {
|
||||
item(Items.PACKED_ICE) { setCount(minimal = 1, maximal = 3) }
|
||||
item(MItems.NUTRIENT_PASTE) { setCount(minimal = 1, maximal = 2) }
|
||||
@ -21,106 +17,4 @@ fun addChestLootTables(loot: LootTables) {
|
||||
setRolls(3)
|
||||
}
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.CHEST, modLootTable("salvage_crate")) {
|
||||
lootPool {
|
||||
item(MItems.MECHANICAL_PARTS) { setCount(minimal = 2, maximal = 3) }
|
||||
item(MItems.IRON_PLATE) { setCount(minimal = 2, maximal = 3) }
|
||||
item(MItems.ELECTRIC_PARTS) { setCount(minimal = 2, maximal = 3) }
|
||||
item(MItems.MECHANICAL_PARTS) { setCount(minimal = 2, maximal = 3) }
|
||||
item(MItems.CIRCUIT_PLATING) { setCount(minimal = 1, maximal = 3) }
|
||||
|
||||
item(MItems.METAL_JUNK) { setCount(minimal = 3, maximal = 5) }
|
||||
item(Items.COPPER_INGOT) { setCount(minimal = 1, maximal = 3) }
|
||||
item(Items.EXPOSED_COPPER) { setCount(minimal = 1, maximal = 2) }
|
||||
|
||||
item(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) {
|
||||
chanceCondition(0.1)
|
||||
setWeight(1)
|
||||
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(1, 9), UniformInt.of(0, 3)))
|
||||
}
|
||||
|
||||
setRolls(7)
|
||||
}
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.CHEST, modLootTable("frigate_cargo")) {
|
||||
lootPool {
|
||||
item(Items.IRON_INGOT) {
|
||||
setCount(minimal = 1, maximal = 3)
|
||||
setWeight(3)
|
||||
}
|
||||
item(Items.GOLD_INGOT) { setCount(minimal = 1, maximal = 3) }
|
||||
item(Items.EMERALD) { setCount(minimal = 1, maximal = 3) }
|
||||
|
||||
item(MItems.TRITANIUM_INGOT) { setCount(minimal = 1, maximal = 3) }
|
||||
item(MItems.MECHANICAL_PARTS) {
|
||||
setCount(minimal = 2, maximal = 3)
|
||||
setWeight(2)
|
||||
}
|
||||
item(MItems.CIRCUIT_PLATING) { setCount(minimal = 2, maximal = 3) }
|
||||
item(MItems.ENERGY_BUS) { setCount(minimal = 0, maximal = 2) }
|
||||
|
||||
item(MItems.ROFLITE_ALLOY_INGOT) { setCount(minimal = 0, maximal = 3) }
|
||||
item(MItems.WITHERED_STEEL) { setCount(minimal = 0, maximal = 3) }
|
||||
item(Items.SADDLE) { setCount(minimal = 0, maximal = 1) }
|
||||
item(Items.DIAMOND) { setCount(minimal = 0, maximal = 3) }
|
||||
|
||||
item(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) {
|
||||
chanceCondition(0.2)
|
||||
setWeight(3)
|
||||
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(1, 9), UniformInt.of(0, 3)))
|
||||
}
|
||||
item(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) {
|
||||
chanceCondition(0.1)
|
||||
setWeight(2)
|
||||
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(9, 18), UniformInt.of(0, 3)))
|
||||
}
|
||||
|
||||
item(MItems.PROCEDURAL_BATTERY) {
|
||||
chanceCondition(0.05)
|
||||
setWeight(1)
|
||||
apply(
|
||||
ProceduralBatteryItem.Randomizer(
|
||||
maxBatteryLevel = UniformDecimal(Decimal(10_000_000), Decimal(50_000_000)),
|
||||
batteryLevel = UniformDecimal(Decimal(0), Decimal(25_000_000)),
|
||||
maxInput = UniformDecimal(Decimal(1_000), Decimal(5_000)),
|
||||
))
|
||||
}
|
||||
|
||||
item(MItems.ZPM_BATTERY) {
|
||||
chanceCondition(0.001)
|
||||
setWeight(1)
|
||||
}
|
||||
|
||||
item(MItems.MATTER_DUST) {
|
||||
chanceCondition(0.1)
|
||||
setWeight(4)
|
||||
apply(MatterDustItem.Randomizer(UniformDecimal(Decimal(100), Decimal(2_500))))
|
||||
}
|
||||
|
||||
setRolls(12)
|
||||
}
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.CHEST, modLootTable("laboratory/supply")) {
|
||||
lootPool {
|
||||
item(Items.BREAD) { setCount(minimal = 2, maximal = 3) }
|
||||
item(Items.HONEY_BOTTLE) { setCount(minimal = 1, maximal = 2) }
|
||||
item(MItems.NUTRIENT_PASTE) { setCount(minimal = 2, maximal = 3) }
|
||||
item(Items.SNOWBALL) { setCount(minimal = 1, maximal = 5) }
|
||||
item(Items.PACKED_ICE) { setCount(minimal = 2, maximal = 3) }
|
||||
|
||||
setRolls(7)
|
||||
}
|
||||
}
|
||||
|
||||
loot.builder(LootContextParamSets.CHEST, modLootTable("laboratory/reward")) {
|
||||
lootPool {
|
||||
item(MItems.NUTRIENT_PASTE) { setCount(minimal = 2, maximal = 3) }
|
||||
|
||||
|
||||
setRolls(5)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,61 +1,176 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.advancements.critereon.EnchantmentPredicate
|
||||
import net.minecraft.advancements.critereon.ItemEnchantmentsPredicate
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.advancements.critereon.ItemSubPredicates
|
||||
import net.minecraft.advancements.critereon.MinMaxBounds
|
||||
import net.minecraft.util.valueproviders.UniformInt
|
||||
import net.minecraft.world.item.enchantment.Enchantments
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.storage.loot.entries.AlternativesEntry
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf
|
||||
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.parameters.LootContextParamSets
|
||||
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition
|
||||
import net.minecraft.world.level.storage.loot.predicates.MatchTool
|
||||
import ru.dbotthepony.mc.otm.util.lookupOrThrow
|
||||
import ru.dbotthepony.mc.otm.data.loot.Int2NumberProvider
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
private fun ore(lootTables: LootTables, ore: Block, clump: ItemLike, count: Int = 1) {
|
||||
lootTables.builder(ore) {
|
||||
add(AlternativesEntry.alternatives(
|
||||
LootItem.lootTableItem(ore).also {
|
||||
it.condition(MatchTool.toolMatches(
|
||||
ItemPredicate.Builder.item().withSubPredicate(
|
||||
ItemSubPredicates.ENCHANTMENTS,
|
||||
ItemEnchantmentsPredicate.enchantments(listOf(EnchantmentPredicate(
|
||||
lootTables.registry.get().lookupOrThrow(Enchantments.SILK_TOUCH), MinMaxBounds.Ints.atLeast(1)
|
||||
)))
|
||||
)
|
||||
))
|
||||
},
|
||||
|
||||
LootItem.lootTableItem(clump).also {
|
||||
if (count != 1)
|
||||
it.apply(SetItemCountFunction.setCount(Int2NumberProvider(UniformInt.of(1, count))))
|
||||
|
||||
it.apply(ApplyBonusCount.addOreBonusCount(lootTables.registry.get().lookupOrThrow(Enchantments.FORTUNE)))
|
||||
it.condition(ExplosionCondition.survivesExplosion())
|
||||
}
|
||||
))
|
||||
}
|
||||
}
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
fun addLootTables(lootTables: LootTables) {
|
||||
lootTables.dropsSelf(MBlocks.MATTER_CABLE) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.ENERGY_CABLES.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.DECORATIVE_CRATE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MRegistry.COMPUTER_TERMINAL.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.CARGO_CRATES.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_BLOCK.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_WALL.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STAIRS.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MRegistry.TRITANIUM_SLAB.allBlocks.values)
|
||||
lootTables.dropsSelf(MRegistry.VENT.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.VENT_ALTERNATIVE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.FLOOR_TILES.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.UNREFINED_FLOOR_TILES.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_BLOCK.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MRegistry.FLOOR_TILES_STAIRS.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MRegistry.FLOOR_TILES_SLAB.blocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.CARBON_FIBRE_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.METAL_MESH) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_RAW_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_STRIPED_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_STRIPED_WALL) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_STRIPED_STAIRS) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.createSlabItemTable(MBlocks.TRITANIUM_STRIPED_SLAB) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.MATTER_CABLE) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.GRAVITATION_STABILIZER)
|
||||
lootTables.dropsOther(MBlocks.GRAVITATION_STABILIZER_LENS, MBlocks.GRAVITATION_STABILIZER)
|
||||
|
||||
ore(lootTables, MBlocks.TRITANIUM_ORE, MItems.TRITANIUM_ORE_CLUMP)
|
||||
ore(lootTables, MBlocks.DEEPSLATE_TRITANIUM_ORE, MItems.TRITANIUM_ORE_CLUMP)
|
||||
lootTables.dropsSelf(MBlocks.LABORATORY_LAMP) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.LABORATORY_LAMP_INVERTED) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.DANGER_STRIPE_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.METAL_BEAM) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_INGOT_BLOCK) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.TRITANIUM_BARS) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
lootTables.dropsSelf(MBlocks.ENERGY_CABLES.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
ore(lootTables, MBlocks.DILITHIUM_ORE, MItems.DILITHIUM_CRYSTAL, 2)
|
||||
ore(lootTables, MBlocks.DEEPSLATE_DILITHIUM_ORE, MItems.DILITHIUM_CRYSTAL, 2)
|
||||
lootTables.dropsSelf(MBlocks.INFINITE_WATER_SOURCE) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MBlocks.ENGINE) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
for (block in MBlocks.TRITANIUM_ANVIL)
|
||||
lootTables.dropsSelf(block) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
for (door in MBlocks.TRITANIUM_TRAPDOOR.values)
|
||||
lootTables.dropsSelf(door) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.dropsSelf(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.block(MBlocks.PHANTOM_ATTRACTOR) {
|
||||
item(MBlocks.PHANTOM_ATTRACTOR) {
|
||||
blockStateCondition(MBlocks.PHANTOM_ATTRACTOR) {
|
||||
this[BlockStateProperties.DOUBLE_BLOCK_HALF] = DoubleBlockHalf.LOWER
|
||||
}
|
||||
}
|
||||
|
||||
condition(ExplosionCondition.survivesExplosion())
|
||||
}
|
||||
|
||||
for (door in MBlocks.TRITANIUM_DOOR.values) {
|
||||
lootTables.block(door) {
|
||||
item(door) {
|
||||
blockStateCondition(door) {
|
||||
this[BlockStateProperties.DOUBLE_BLOCK_HALF] = DoubleBlockHalf.LOWER
|
||||
}
|
||||
}
|
||||
|
||||
condition(ExplosionCondition.survivesExplosion())
|
||||
}
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLocation("research_all_android")) {
|
||||
lootPool {
|
||||
add(LootItem.lootTableItem(MItems.ExopackUpgrades.INVENTORY_UPGRADE_HUGE))
|
||||
}
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLocation("tritanium_block3")) {
|
||||
lootPool { item(Items.WHITE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.ORANGE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.MAGENTA_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.LIGHT_BLUE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.YELLOW_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.LIME_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.PINK_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.GRAY_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.LIGHT_GRAY_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.CYAN_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.PURPLE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.BLUE_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.BROWN_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.GREEN_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.RED_DYE) { setCount(8) } }
|
||||
lootPool { item(Items.BLACK_DYE) { setCount(8) } }
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.ADVANCEMENT_ENTITY, modLocation("tritanium_block4")) {
|
||||
lootPool { item(Items.WHITE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.ORANGE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.MAGENTA_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.LIGHT_BLUE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.YELLOW_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.LIME_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.PINK_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.GRAY_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.LIGHT_GRAY_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.CYAN_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.PURPLE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.BLUE_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.BROWN_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.GREEN_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.RED_DYE) { setCount(64) } }
|
||||
lootPool { item(Items.BLACK_DYE) { setCount(64) } }
|
||||
}
|
||||
|
||||
lootTables.tile(MBlocks.COBBLESTONE_GENERATOR.values)
|
||||
lootTables.tile(MBlocks.ESSENCE_STORAGE.values)
|
||||
lootTables.tile(MBlocks.MATTER_RECONSTRUCTOR.values)
|
||||
lootTables.tile(MBlocks.FLUID_TANK)
|
||||
lootTables.tile(MBlocks.PAINTER)
|
||||
lootTables.tile(MBlocks.MATTER_ENTANGLER)
|
||||
|
||||
lootTables.tile(MBlocks.ENERGY_SERVO.values)
|
||||
lootTables.tile(MBlocks.ENERGY_COUNTER.values)
|
||||
lootTables.tile(MBlocks.CHEMICAL_GENERATOR.values)
|
||||
lootTables.tile(MBlocks.HOLO_SIGN, "isLocked")
|
||||
lootTables.tile(MBlocks.STORAGE_CABLE)
|
||||
lootTables.tile(MBlocks.ANDROID_STATION.values)
|
||||
lootTables.tile(MBlocks.ANDROID_CHARGER.values)
|
||||
lootTables.tile(MBlocks.BATTERY_BANK.values)
|
||||
lootTables.tile(MBlocks.DRIVE_VIEWER.values)
|
||||
|
||||
lootTables.tile(MBlocks.STORAGE_BUS)
|
||||
lootTables.tile(MBlocks.STORAGE_IMPORTER)
|
||||
lootTables.tile(MBlocks.STORAGE_EXPORTER)
|
||||
lootTables.tile(MBlocks.STORAGE_POWER_SUPPLIER.values)
|
||||
lootTables.tile(MBlocks.DRIVE_RACK)
|
||||
|
||||
lootTables.tile(MBlocks.MATTER_DECOMPOSER.values)
|
||||
lootTables.tile(MBlocks.MATTER_REPLICATOR.values)
|
||||
lootTables.tile(MBlocks.MATTER_RECYCLER.values)
|
||||
lootTables.tile(MBlocks.MATTER_SCANNER.values)
|
||||
lootTables.tile(MBlocks.PLATE_PRESS.values)
|
||||
lootTables.tile(MBlocks.TWIN_PLATE_PRESS.values)
|
||||
|
||||
lootTables.tile(MBlocks.POWERED_FURNACE.values)
|
||||
lootTables.tile(MBlocks.POWERED_SMOKER.values)
|
||||
lootTables.tile(MBlocks.POWERED_BLAST_FURNACE.values)
|
||||
|
||||
lootTables.tile(MBlocks.MATTER_PANEL.values)
|
||||
lootTables.tile(MBlocks.PATTERN_STORAGE)
|
||||
lootTables.tile(MBlocks.MATTER_CAPACITOR_BANK.values)
|
||||
lootTables.tile(MBlocks.MATTER_BOTTLER.values)
|
||||
|
||||
lootTables.tile(MBlocks.BLACK_HOLE_GENERATOR)
|
||||
lootTables.tile(MBlocks.ITEM_INPUT_HATCH)
|
||||
lootTables.tile(MBlocks.ITEM_OUTPUT_HATCH)
|
||||
}
|
||||
|
@ -1,82 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf
|
||||
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
|
||||
fun addMachineLoot(lootTables: LootTables) {
|
||||
lootTables.block(MBlocks.PHANTOM_ATTRACTOR) {
|
||||
item(MBlocks.PHANTOM_ATTRACTOR) {
|
||||
blockStateCondition(MBlocks.PHANTOM_ATTRACTOR) {
|
||||
this[BlockStateProperties.DOUBLE_BLOCK_HALF] = DoubleBlockHalf.LOWER
|
||||
}
|
||||
}
|
||||
|
||||
condition(ExplosionCondition.survivesExplosion())
|
||||
}
|
||||
|
||||
lootTables.dropsSelf(MBlocks.INFINITE_WATER_SOURCE) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.tile(MBlocks.COBBLESTONE_GENERATOR.values)
|
||||
lootTables.tile(MBlocks.ESSENCE_STORAGE.values)
|
||||
lootTables.tile(MBlocks.MATTER_RECONSTRUCTOR.values)
|
||||
lootTables.tile(MBlocks.FLUID_TANK)
|
||||
lootTables.tile(MBlocks.PAINTER)
|
||||
lootTables.tile(MBlocks.MATTER_ENTANGLER)
|
||||
lootTables.tile(MBlocks.GRILL.values)
|
||||
|
||||
lootTables.tile(MBlocks.ENERGY_SERVO.values)
|
||||
lootTables.tile(MBlocks.ENERGY_COUNTER.values)
|
||||
lootTables.tile(MBlocks.CHEMICAL_GENERATOR.values)
|
||||
lootTables.tile(MBlocks.HOLO_SIGN, "isLocked")
|
||||
lootTables.tile(MBlocks.STORAGE_CABLE)
|
||||
lootTables.tile(MBlocks.ANDROID_STATION.values)
|
||||
lootTables.tile(MBlocks.ANDROID_CHARGER.values)
|
||||
lootTables.tile(MBlocks.BATTERY_BANK.values)
|
||||
lootTables.tile(MBlocks.DRIVE_VIEWER.values)
|
||||
|
||||
lootTables.tile(MBlocks.STORAGE_BUS)
|
||||
lootTables.tile(MBlocks.STORAGE_IMPORTER)
|
||||
lootTables.tile(MBlocks.STORAGE_EXPORTER)
|
||||
lootTables.tile(MBlocks.STORAGE_POWER_SUPPLIER.values)
|
||||
lootTables.tile(MBlocks.DRIVE_RACK)
|
||||
|
||||
lootTables.tile(MBlocks.MATTER_DECOMPOSER.values)
|
||||
lootTables.tile(MBlocks.MATTER_REPLICATOR.values)
|
||||
lootTables.tile(MBlocks.MATTER_RECYCLER.values)
|
||||
lootTables.tile(MBlocks.MATTER_SCANNER.values)
|
||||
lootTables.tile(MBlocks.PLATE_PRESS.values)
|
||||
lootTables.tile(MBlocks.TWIN_PLATE_PRESS.values)
|
||||
|
||||
lootTables.tile(MBlocks.POWERED_FURNACE.values)
|
||||
lootTables.tile(MBlocks.POWERED_SMOKER.values)
|
||||
lootTables.tile(MBlocks.POWERED_BLAST_FURNACE.values)
|
||||
|
||||
lootTables.tile(MBlocks.MATTER_PANEL.values)
|
||||
lootTables.tile(MBlocks.PATTERN_STORAGE)
|
||||
lootTables.tile(MBlocks.MATTER_CAPACITOR_BANK.values)
|
||||
lootTables.tile(MBlocks.MATTER_BOTTLER.values)
|
||||
|
||||
lootTables.tile(MBlocks.BLACK_HOLE_GENERATOR)
|
||||
|
||||
lootTables.tile(MBlocks.FLYWHEEL_BATTERY)
|
||||
|
||||
lootTables.dropsSelf(listOf(
|
||||
MBlocks.MATTER_INJECTOR,
|
||||
MBlocks.ANTIMATTER_INJECTOR,
|
||||
MBlocks.HIGH_ENERGY_PARTICLE_COLLECTOR
|
||||
)) { condition(ExplosionCondition.survivesExplosion()) }
|
||||
|
||||
lootTables.tile(MBlocks.ITEM_INPUT_HATCH)
|
||||
lootTables.tile(MBlocks.ITEM_OUTPUT_HATCH)
|
||||
|
||||
lootTables.tile(MBlocks.ENERGY_INPUT_HATCH)
|
||||
lootTables.tile(MBlocks.ENERGY_OUTPUT_HATCH)
|
||||
|
||||
lootTables.tile(MBlocks.MATTER_INPUT_HATCH)
|
||||
lootTables.tile(MBlocks.MATTER_OUTPUT_HATCH)
|
||||
|
||||
lootTables.tile(MBlocks.ENERGY_INPUT_INTERFACE)
|
||||
lootTables.tile(MBlocks.ENERGY_OUTPUT_INTERFACE)
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.loot
|
||||
|
||||
import net.minecraft.util.valueproviders.UniformInt
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
|
||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.data.world.UniformDecimal
|
||||
import ru.dbotthepony.mc.otm.datagen.modLootTable
|
||||
import ru.dbotthepony.mc.otm.item.ProceduralBatteryItem
|
||||
import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem
|
||||
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addVaultLoot(lootTables: LootTables) {
|
||||
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/matter_dust")) {
|
||||
lootPool { item(MItems.MATTER_DUST) {
|
||||
chanceCondition(0.2)
|
||||
setWeight(4)
|
||||
apply(MatterDustItem.Randomizer(UniformDecimal(Decimal(100), Decimal(2_500))))
|
||||
} }
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/pill")) {
|
||||
lootPool { item(MItems.PILL_ANDROID) {
|
||||
chanceCondition(0.1)
|
||||
setWeight(1)
|
||||
} }
|
||||
lootPool { item(MItems.PILL_HEAL) {
|
||||
chanceCondition(0.5)
|
||||
setWeight(2)
|
||||
setCount(2, 5)
|
||||
} }
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/exosuit")) {
|
||||
lootPool { item(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) {
|
||||
chanceCondition(0.2)
|
||||
setWeight(2)
|
||||
|
||||
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(1, 9), UniformInt.of(0, 3)))
|
||||
} }
|
||||
|
||||
lootPool { item(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) {
|
||||
chanceCondition(0.1)
|
||||
setWeight(1)
|
||||
|
||||
apply(ProceduralExopackSlotUpgradeItem.Randomizer(UniformInt.of(9, 18), UniformInt.of(0, 3)))
|
||||
} }
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/battery")) {
|
||||
lootPool { item(MItems.PROCEDURAL_BATTERY) {
|
||||
chanceCondition(0.05)
|
||||
setWeight(1)
|
||||
|
||||
apply(
|
||||
ProceduralBatteryItem.Randomizer(
|
||||
maxBatteryLevel = UniformDecimal(Decimal(10_000_000), Decimal(50_000_000)),
|
||||
batteryLevel = UniformDecimal(Decimal(0), Decimal(25_000_000)),
|
||||
maxInput = UniformDecimal(Decimal(1_000), Decimal(5_000)),
|
||||
))
|
||||
} }
|
||||
}
|
||||
|
||||
lootTables.builder(LootContextParamSets.VAULT, modLootTable("trials/zpm_battery")) {
|
||||
lootPool { item(MItems.ZPM_BATTERY) {
|
||||
chanceCondition(0.001)
|
||||
setWeight(1)
|
||||
} }
|
||||
}
|
||||
}
|
@ -2,15 +2,14 @@ package ru.dbotthepony.mc.otm.datagen.models
|
||||
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.WaterloggedTransparentBlock
|
||||
import net.neoforged.neoforge.client.model.generators.BlockModelProvider
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import net.minecraftforge.client.model.generators.BlockModelProvider
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import java.util.LinkedList
|
||||
|
||||
class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
private val callbacks = LinkedList<(MatteryBlockModelProvider) -> Unit>()
|
||||
|
||||
fun exec(callback: (MatteryBlockModelProvider) -> Unit) {
|
||||
@ -27,30 +26,6 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
|
||||
return "Block Models: $modid"
|
||||
}
|
||||
|
||||
fun cubeAll(vararg blocks: Block) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, modLocation("block/${block.registryName!!.path}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun cubeAllCutout(vararg blocks: Block) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, modLocation("block/${block.registryName!!.path}")).renderType("cutout_mipped")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun cubeAllFramed(modelName: String, textureName: String) {
|
||||
exec {
|
||||
withExistingParent(modelName, modLocation("block/frame_block"))
|
||||
.texture("texture", textureName)
|
||||
.renderType("cutout_mipped")
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeGlassAll(blocks: Collection<Block>) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
@ -75,13 +50,6 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeCubeAllCutout(vararg blocks: Block) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, modLocation("block/decorative/${block.registryName!!.path}")).renderType("cutout_mipped")
|
||||
}
|
||||
}
|
||||
}
|
||||
fun decorativeCubeAll(subdir: String, vararg blocks: Block) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
@ -112,20 +80,14 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
|
||||
}
|
||||
}
|
||||
|
||||
fun column(block: Block, side: String, end: String) {
|
||||
fun column(block: Block, end: String, side: String) {
|
||||
exec {
|
||||
cubeColumn(block.registryName!!.path, modLocation(side), modLocation(end))
|
||||
cubeColumn(block.registryName!!.path, modLocation(end), modLocation(side))
|
||||
}
|
||||
}
|
||||
|
||||
fun orientable(block: Block, side: String, front: String) {
|
||||
exec {
|
||||
orientable(block.registryName!!.path, modLocation(side), modLocation(front), modLocation(side))
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeColumn(it: Block, side: String, end: String) {
|
||||
column(it, "block/decorative/$side", "block/decorative/$end")
|
||||
fun decorativeColumn(it: Block, end: String, side: String) {
|
||||
column(it, "block/decorative/$end", "block/decorative/$side")
|
||||
}
|
||||
|
||||
fun resourceCubeAll(vararg blocks: Block) {
|
||||
@ -137,7 +99,7 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
|
||||
}
|
||||
|
||||
fun colored(modelName: String, suffix: String, textureKeys: Map<String, String>) {
|
||||
for (color in DyeColor.entries) {
|
||||
for (color in DyeColor.values()) {
|
||||
exec {
|
||||
val model = withExistingParent(modelName + "_${color.name.lowercase()}$suffix", modLocation(modelName + suffix))
|
||||
|
||||
@ -181,28 +143,16 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
|
||||
}
|
||||
}
|
||||
|
||||
fun cable(modelName: String, textureName: String, thin: Boolean = false, powered: Boolean = false) {
|
||||
val baseName = if (thin) "base_cable_thin" else "base_cable"
|
||||
|
||||
fun cable(modelName: String, textureName: String) {
|
||||
exec {
|
||||
withExistingParent("block/${modelName}_core", modLocation("block/${baseName}_core"))
|
||||
withExistingParent("block/${modelName}_core", modLocation("block/base_cable_core"))
|
||||
.texture("0", textureName)
|
||||
|
||||
withExistingParent("block/${modelName}_connection", modLocation("block/${baseName}_connection"))
|
||||
withExistingParent("block/${modelName}_connection", modLocation("block/base_cable_connection"))
|
||||
.texture("0", textureName)
|
||||
|
||||
withExistingParent("item/${modelName}", modLocation("item/${baseName}"))
|
||||
withExistingParent("item/${modelName}", modLocation("item/base_cable"))
|
||||
.texture("0", textureName)
|
||||
}
|
||||
|
||||
if (powered && !thin) {
|
||||
exec {
|
||||
withExistingParent("block/${modelName}_core_powered", modLocation("block/${baseName}_core_powered"))
|
||||
.texture("0", textureName)
|
||||
|
||||
withExistingParent("block/${modelName}_connection_powered", modLocation("block/${baseName}_connection_powered"))
|
||||
.texture("0", textureName)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,22 +1,20 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addComponentRecipes(consumer: RecipeOutput) {
|
||||
// Обычный рецепт
|
||||
MatteryRecipe(MItems.BASIC_CONTROL_CIRCUIT, count = 3, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.BASIC_CONTROL_CIRCUIT, count = 3)
|
||||
.row(MItemTags.COPPER_WIRES, Tags.Items.DUSTS_REDSTONE, MItemTags.COPPER_WIRES)
|
||||
.row(MItems.CIRCUIT_PLATING, MItems.CIRCUIT_PLATING, MItems.CIRCUIT_PLATING)
|
||||
.unlockedBy(MItemTags.COPPER_WIRES)
|
||||
.build(consumer)
|
||||
|
||||
// ручной рецепт
|
||||
MatteryRecipe(MItems.BASIC_CONTROL_CIRCUIT, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.BASIC_CONTROL_CIRCUIT)
|
||||
.rowB(Tags.Items.DUSTS_REDSTONE)
|
||||
.rowB(MItemTags.COPPER_WIRES)
|
||||
.rowB(ItemTags.WOODEN_SLABS)
|
||||
@ -24,14 +22,14 @@ fun addComponentRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer, "alt")
|
||||
|
||||
MatteryRecipe(MItems.ADVANCED_CONTROL_CIRCUIT, count = 3, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.ADVANCED_CONTROL_CIRCUIT, count = 3)
|
||||
.row(MItemTags.COPPER_WIRES, Tags.Items.GEMS_QUARTZ, MItemTags.COPPER_WIRES)
|
||||
.row(MItemTags.GOLD_WIRES, Tags.Items.DUSTS_REDSTONE, MItemTags.GOLD_WIRES)
|
||||
.row(MItems.CIRCUIT_PLATING, MItems.CIRCUIT_PLATING, MItems.CIRCUIT_PLATING)
|
||||
.unlockedBy(MItemTags.GOLD_WIRES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MACHINE_FRAME, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.MACHINE_FRAME)
|
||||
.row(MItemTags.HARDENED_GLASS, MItemTags.BASIC_CIRCUIT, MItemTags.HARDENED_GLASS)
|
||||
.row(MItems.ELECTRIC_PARTS, MItemTags.TRITANIUM_PLATES, MItems.ELECTRIC_PARTS)
|
||||
.rowAC(MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
@ -40,21 +38,21 @@ fun addComponentRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItems.ELECTRIC_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.GOLD_WIRING, count = 8, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.GOLD_WIRING, count = 8)
|
||||
.rowB(Tags.Items.INGOTS_GOLD)
|
||||
.row(Tags.Items.INGOTS_GOLD, Tags.Items.RODS_WOODEN, Tags.Items.INGOTS_GOLD)
|
||||
.rowB(Tags.Items.INGOTS_GOLD)
|
||||
.unlockedBy(Tags.Items.INGOTS_GOLD)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.COPPER_WIRING, count = 8, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.COPPER_WIRING, count = 8)
|
||||
.rowB(Tags.Items.INGOTS_COPPER)
|
||||
.row(Tags.Items.INGOTS_COPPER, Tags.Items.RODS_WOODEN, Tags.Items.INGOTS_COPPER)
|
||||
.rowB(Tags.Items.INGOTS_COPPER)
|
||||
.unlockedBy(Tags.Items.INGOTS_COPPER)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_BUS, count = 2, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.ENERGY_BUS, count = 2)
|
||||
.rowAB(Tags.Items.DUSTS_REDSTONE, MItems.ELECTRIC_PARTS)
|
||||
.row(MItemTags.COPPER_WIRES, MItemTags.COPPER_WIRES, MItemTags.COPPER_WIRES)
|
||||
.rowBC(MItems.ELECTRIC_PARTS, Tags.Items.DUSTS_REDSTONE)
|
||||
@ -63,47 +61,30 @@ fun addComponentRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_IO_PORT, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.MATTER_IO_PORT)
|
||||
.rowB(MItems.MATTER_CABLE)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.BASIC_CIRCUIT, MItemTags.TRITANIUM_PLATES)
|
||||
.rowB(MItems.MATTER_CABLE)
|
||||
.unlockedBy(MItems.MATTER_CABLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_TRANSFORM_MATRIX, category = RecipeCategory.MISC)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItems.MATTER_CABLE, MItemTags.DILITHIUM_GEMS)
|
||||
MatteryRecipe(MItems.MATTER_TRANSFORM_MATRIX)
|
||||
.row(Tags.Items.ENDER_PEARLS, MItems.MATTER_CABLE, Tags.Items.ENDER_PEARLS)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.ADVANCED_CIRCUIT, MItemTags.TRITANIUM_PLATES)
|
||||
.rowB(MItems.MATTER_CABLE)
|
||||
.unlockedBy(MItems.MATTER_CABLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_PARTS, count = 3, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_PARTS, count = 3)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.HARDENED_GLASS_PANES, MItemTags.IRON_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.HARDENED_GLASS_PANES, MItemTags.TRITANIUM_PLATES)
|
||||
.rowB(MItemTags.HARDENED_GLASS_PANES)
|
||||
.unlockedBy(MItems.MATTER_CABLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ELECTRIC_PARTS, count = 4, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.ELECTRIC_PARTS, count = 4)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, MItemTags.COPPER_WIRES, Tags.Items.DUSTS_REDSTONE)
|
||||
.row(Tags.Items.NUGGETS_GOLD, Tags.Items.NUGGETS_IRON, Tags.Items.NUGGETS_GOLD)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, MItemTags.COPPER_WIRES, Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MECHANICAL_PARTS, count = 4, category = RecipeCategory.MISC)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Tags.Items.INGOTS_IRON, MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ELECTROMOTOR, category = RecipeCategory.MISC)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
.row(MItems.ELECTROMAGNET, MItems.MECHANICAL_PARTS, MItems.ELECTROMAGNET)
|
||||
.row(MItemTags.COPPER_WIRES, MItems.MECHANICAL_PARTS, MItemTags.COPPER_WIRES)
|
||||
.unlockedBy(MItems.ELECTROMAGNET)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.DISPLAY_SCREEN, 3)
|
||||
.row(MItemTags.IRON_PLATES, Tags.Items.DUSTS_GLOWSTONE, Tags.Items.GLASS_PANES_COLORLESS)
|
||||
.row(MItemTags.IRON_PLATES, Tags.Items.DUSTS_REDSTONE, Tags.Items.GLASS_PANES_COLORLESS)
|
||||
.row(MItemTags.IRON_PLATES, Tags.Items.DUSTS_GLOWSTONE, Tags.Items.GLASS_PANES_COLORLESS)
|
||||
.build(consumer)
|
||||
}
|
||||
|
@ -1,39 +1,36 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.data.recipes.SimpleCookingRecipeBuilder
|
||||
import net.minecraft.util.valueproviders.ConstantFloat
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
private fun RecipeOutput.addRecyclingRecipe(inputs: Collection<ItemLike>, result: Item, name: String) {
|
||||
val inputStacks = inputs.map(::ItemStack)
|
||||
|
||||
SimpleCookingRecipeBuilder.smelting(
|
||||
Ingredient.of(inputStacks.stream()),
|
||||
RecipeCategory.MISC, result, 0f, 200
|
||||
result, 0f, 200
|
||||
).also { r -> inputs.forEach { r.unlockedBy(it) } }.save(this, modLocation("smelting/${name}"))
|
||||
|
||||
SimpleCookingRecipeBuilder.blasting(
|
||||
Ingredient.of(inputStacks.stream()),
|
||||
RecipeCategory.MISC, result, 0f, 100
|
||||
result, 0f, 100
|
||||
).also { r -> inputs.forEach { r.unlockedBy(it) } }.save(this, modLocation("blasting/${name}"))
|
||||
}
|
||||
|
||||
fun addBlastingRecipes(consumer: RecipeOutput) {
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItems.MIRROR_COMPOUND), RecipeCategory.MISC, MItems.MIRROR, 0.1f, 100).unlockedBy(
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItems.MIRROR_COMPOUND), MItems.MIRROR, 0.1f, 100).unlockedBy(
|
||||
MItems.MIRROR_COMPOUND).save(consumer)
|
||||
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_PLATES), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 0f, 100).unlockedBy(
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_PLATES), MItems.TRITANIUM_INGOT, 0f, 100).unlockedBy(
|
||||
MItemTags.TRITANIUM_PLATES).save(consumer, modLocation("tritanium_ingot_from_plates"))
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_PLATES), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 0f, 50).unlockedBy(
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_PLATES), MItems.TRITANIUM_INGOT, 0f, 50).unlockedBy(
|
||||
MItemTags.TRITANIUM_PLATES).save(consumer, modLocation("tritanium_ingot_from_plates_blasting"))
|
||||
|
||||
consumer.addRecyclingRecipe(MItems.TRITANIUM_TOOLS, MItems.TRITANIUM_NUGGET, "tritanium_nugget_from_tools")
|
||||
@ -41,21 +38,17 @@ fun addBlastingRecipes(consumer: RecipeOutput) {
|
||||
}
|
||||
|
||||
fun addOreSmeltingRecipes(consumer: RecipeOutput) {
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_ORES), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 1f, 200).unlockedBy(MItemTags.TRITANIUM_ORES).save(consumer, modLocation("smelting/tritanium_ingot_from_ore_block"))
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_ORES), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 1f, 100).unlockedBy(MItemTags.TRITANIUM_ORES).save(consumer, modLocation("blasting/tritanium_ingot_from_ore_block"))
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_ORES), MItems.TRITANIUM_INGOT, 1f, 200).unlockedBy(MItemTags.TRITANIUM_ORES).save(consumer, modLocation("smelting/tritanium_ingot_from_ore_block"))
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_ORES), MItems.TRITANIUM_INGOT, 1f, 100).unlockedBy(MItemTags.TRITANIUM_ORES).save(consumer, modLocation("blasting/tritanium_ingot_from_ore_block"))
|
||||
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_ORE_CLUMPS), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 1f, 200).unlockedBy(MItemTags.TRITANIUM_ORE_CLUMPS).save(consumer, modLocation("smelting/tritanium_ingot_from_raw_ore"))
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_ORE_CLUMPS), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 1f, 100).unlockedBy(MItemTags.TRITANIUM_ORE_CLUMPS).save(consumer, modLocation("blasting/tritanium_ingot_from_raw_ore"))
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_ORE_CLUMPS), MItems.TRITANIUM_INGOT, 1f, 200).unlockedBy(MItemTags.TRITANIUM_ORE_CLUMPS).save(consumer, modLocation("smelting/tritanium_ingot_from_raw_ore"))
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_ORE_CLUMPS), MItems.TRITANIUM_INGOT, 1f, 100).unlockedBy(MItemTags.TRITANIUM_ORE_CLUMPS).save(consumer, modLocation("blasting/tritanium_ingot_from_raw_ore"))
|
||||
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_DUSTS), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 0f, 200).unlockedBy(MItemTags.TRITANIUM_DUSTS).save(consumer, modLocation("smelting/tritanium_ingot_from_dust"))
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_DUSTS), RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 0f, 100).unlockedBy(MItemTags.TRITANIUM_DUSTS).save(consumer, modLocation("blasting/tritanium_ingot_from_dust"))
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(MItemTags.TRITANIUM_DUSTS), MItems.TRITANIUM_INGOT, 0f, 200).unlockedBy(MItemTags.TRITANIUM_DUSTS).save(consumer, modLocation("smelting/tritanium_ingot_from_dust"))
|
||||
SimpleCookingRecipeBuilder.blasting(Ingredient.of(MItemTags.TRITANIUM_DUSTS), MItems.TRITANIUM_INGOT, 0f, 100).unlockedBy(MItemTags.TRITANIUM_DUSTS).save(consumer, modLocation("blasting/tritanium_ingot_from_dust"))
|
||||
}
|
||||
|
||||
fun addMicrowaveRecipes(provider: MatteryRecipeProvider) {
|
||||
|
||||
for (drive in listOf(MItems.PATTERN_DRIVE_NORMAL, MItems.PATTERN_DRIVE_DOUBLE, MItems.PATTERN_DRIVE_TRIPLE, MItems.PATTERN_DRIVE_QUAD)) {
|
||||
provider.microwave("${drive.registryName!!.path}_erase", Ingredient.of(drive), Ingredient.of(drive), workTicks = 30 * 20, experience = ConstantFloat.of(0f))
|
||||
}
|
||||
|
||||
provider.microwave("pattern_drive_normal_erase", Ingredient.of(MItems.PATTERN_DRIVE_NORMAL), Ingredient.of(MItems.PATTERN_DRIVE_NORMAL), workTicks = 30 * 20, experience = ConstantFloat.of(0f))
|
||||
}
|
||||
|
||||
|
@ -1,110 +1,65 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.core.component.DataComponents
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.data.recipes.ShapelessRecipeBuilder
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import net.neoforged.neoforge.common.conditions.NotCondition
|
||||
import net.neoforged.neoforge.common.conditions.TagEmptyCondition
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
|
||||
import ru.dbotthepony.mc.otm.config.CablesConfig
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.recipe.UpgradeRecipe
|
||||
|
||||
fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
val machinesCategory = RecipeCategory.DECORATIONS
|
||||
|
||||
MatteryRecipe(MRegistry.CARGO_CRATES.item, category = RecipeCategory.DECORATIONS)
|
||||
MatteryRecipe(MRegistry.CARGO_CRATES.item)
|
||||
.row(MItemTags.TRITANIUM_PLATES, multiIngredient(Tags.Items.CHESTS_WOODEN, Tags.Items.BARRELS_WOODEN), MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(Tags.Items.CHESTS)
|
||||
.build(consumer)
|
||||
|
||||
for ((dye, crate) in MRegistry.CARGO_CRATES.blocks) {
|
||||
ShapelessRecipeBuilder(RecipeCategory.DECORATIONS, crate, 1)
|
||||
ShapelessRecipeBuilder(crate, 1)
|
||||
.requires(Ingredient.of(MRegistry.CARGO_CRATES.allItems.entries.stream().filter { it.key != dye }.map { ItemStack(it.value) }))
|
||||
.requires(dye.tag)
|
||||
.unlockedBy(MRegistry.CARGO_CRATES.allItems.entries.stream().filter { it.key != dye }.map { it.value })
|
||||
.save(consumer, "${crate.registryName}_alt")
|
||||
}
|
||||
|
||||
ShapelessRecipeBuilder(MItems.TRITANIUM_INGOT_BLOCK, 1)
|
||||
.requires(Ingredient.of(MItemTags.TRITANIUM_INGOTS), 9)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(MItems.TRITANIUM_INGOT, 9)
|
||||
.requires(Ingredient.of(MItemTags.TRITANIUM_INGOTS_STORAGE))
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS_STORAGE)
|
||||
.save(consumer, modLocation("tritanium_ingot_from_storage"))
|
||||
|
||||
MItems.ENERGY_COUNTER.values.forEach {
|
||||
ShapelessRecipeBuilder(machinesCategory, it, 1)
|
||||
ShapelessRecipeBuilder(it, 1)
|
||||
.requires(it)
|
||||
.unlockedBy(it)
|
||||
.save(consumer, modLocation("${it.registryName!!.path}_reset"))
|
||||
}
|
||||
|
||||
ShapelessRecipeBuilder(machinesCategory, MItems.HOLO_SIGN, 1)
|
||||
ShapelessRecipeBuilder(MItems.HOLO_SIGN, 1)
|
||||
.requires(MItems.HOLO_SIGN)
|
||||
.unlockedBy(MItems.HOLO_SIGN)
|
||||
.save(consumer, modLocation("holo_sign_reset"))
|
||||
|
||||
MatteryRecipe(MBlocks.DRIVE_VIEWER[null]!!, category = machinesCategory)
|
||||
.rowBC(MItems.DISPLAY_SCREEN, Tags.Items.GLASS_PANES)
|
||||
.row(MItemTags.IRON_PLATES, MItems.MACHINE_FRAME, MItemTags.IRON_PLATES)
|
||||
.row(MItemTags.BASIC_CIRCUIT, MItems.MATTER_IO_PORT, MItemTags.BASIC_CIRCUIT)
|
||||
.unlockedBy(MItems.MATTER_IO_PORT)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MBlocks.MATTER_BOTTLER[null]!!, category = machinesCategory)
|
||||
.row(MItems.MATTER_CAPACITOR_PARTS, MItems.MATTER_IO_PORT, MItems.MATTER_CAPACITOR_PARTS)
|
||||
.row(Tags.Items.GLASS_BLOCKS, MItems.MACHINE_FRAME, Tags.Items.GLASS_BLOCKS)
|
||||
.rowAC(MItems.MATTER_CABLE, MItems.MATTER_CABLE)
|
||||
.unlockedBy(MItems.MATTER_CAPACITOR_PARTS)
|
||||
.unlockedBy(MItems.MATTER_IO_PORT)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MBlocks.MATTER_DECOMPOSER[null]!!, category = machinesCategory)
|
||||
.row(MItems.MATTER_TRANSFORM_MATRIX, MItemTags.BASIC_CIRCUIT, MItems.MATTER_IO_PORT)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItems.MATTER_CABLE, MItems.MATTER_CAPACITOR_PARTS, MItems.MATTER_CABLE)
|
||||
.unlockedBy(MItems.MATTER_CAPACITOR_PARTS)
|
||||
.unlockedBy(MItems.MATTER_IO_PORT)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MBlocks.MATTER_PANEL[null]!!, category = machinesCategory)
|
||||
.row(MItems.ELECTRIC_PARTS, MItemTags.TRITANIUM_PLATES, Tags.Items.GLASS_PANES)
|
||||
.row(MItems.MATTER_CABLE, MItems.DISPLAY_SCREEN, Tags.Items.GLASS_PANES)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItemTags.TRITANIUM_PLATES, Tags.Items.GLASS_PANES)
|
||||
.unlockedBy(Tags.Items.GLASS_BLOCKS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MBlocks.MATTER_REPLICATOR[null]!!, category = machinesCategory)
|
||||
.row(MItems.MATTER_IO_PORT, MItemTags.ADVANCED_CIRCUIT, MItems.MATTER_TRANSFORM_MATRIX)
|
||||
.row(Tags.Items.GEMS_DIAMOND, MItems.MACHINE_FRAME, Tags.Items.GEMS_DIAMOND)
|
||||
.row(MItems.MATTER_CABLE, MItems.MATTER_CAPACITOR_PARTS, MItems.MATTER_CABLE)
|
||||
.unlockedBy(MItems.MATTER_CAPACITOR_PARTS)
|
||||
.unlockedBy(MItems.MATTER_IO_PORT)
|
||||
.unlockedBy(MItems.MATTER_TRANSFORM_MATRIX)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MBlocks.PATTERN_STORAGE, category = machinesCategory)
|
||||
.row(Tags.Items.GLASS_BLOCKS, Tags.Items.GLASS_BLOCKS, Tags.Items.GLASS_BLOCKS)
|
||||
.row(MItemTags.IRON_PLATES, MItems.MACHINE_FRAME, MItemTags.IRON_PLATES)
|
||||
.row(MItems.MATTER_CABLE, MItemTags.BASIC_CIRCUIT, MItems.MATTER_CABLE)
|
||||
.unlockedBy(MItemTags.IRON_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MBlocks.ENERGY_COUNTER[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MBlocks.ENERGY_COUNTER[null]!!)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ENERGY_BUS, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.BASIC_CIRCUIT, MItems.DISPLAY_SCREEN, MItemTags.HARDENED_GLASS_PANES)
|
||||
.row(MItemTags.BASIC_CIRCUIT, Tags.Items.DUSTS_GLOWSTONE, MItemTags.HARDENED_GLASS_PANES_COLORLESS)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ENERGY_BUS, MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItems.ENERGY_BUS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MBlocks.TWIN_PLATE_PRESS[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MBlocks.TWIN_PLATE_PRESS[null]!!)
|
||||
.rowAC(MItems.ELECTROMOTOR, MItems.ELECTROMOTOR)
|
||||
.row(MItemTags.PISTONS, MItems.MACHINE_FRAME, MItemTags.PISTONS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
@ -112,14 +67,14 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.build(consumer)
|
||||
|
||||
for ((color, item) in MItems.PLATE_PRESS) {
|
||||
MatteryRecipe(MBlocks.TWIN_PLATE_PRESS[color]!!, category = machinesCategory)
|
||||
MatteryRecipe(MBlocks.TWIN_PLATE_PRESS[color]!!)
|
||||
.setUpgradeSource(item)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.addUpgradeOps(UpgradeRecipe.All)
|
||||
.rowA(item)
|
||||
.build(consumer, "plate_press_migration/${color?.name?.lowercase() ?: "default"}")
|
||||
}
|
||||
|
||||
MatteryRecipe(MBlocks.CHEMICAL_GENERATOR[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MBlocks.CHEMICAL_GENERATOR[null]!!)
|
||||
.rowB(MItems.ENERGY_BUS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.FURNACES, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAC(MItems.ELECTRIC_PARTS, MItems.ELECTRIC_PARTS)
|
||||
@ -127,50 +82,15 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItems.ENERGY_BUS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_NORMAL, category = machinesCategory)
|
||||
.row(Tags.Items.DUSTS_GLOWSTONE, MItemTags.CARBON_PLATES, Tags.Items.DUSTS_GLOWSTONE)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItemTags.ADVANCED_CIRCUIT, MItemTags.DILITHIUM_GEMS)
|
||||
.row(Tags.Items.DUSTS_GLOWSTONE, Tags.Items.GEMS_DIAMOND, Tags.Items.DUSTS_GLOWSTONE)
|
||||
.unlockedBy(MItemTags.DILITHIUM_GEMS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_DOUBLE, category = machinesCategory)
|
||||
.setUpgradeSource(MItems.PATTERN_DRIVE_NORMAL)
|
||||
.addUpgradeOps(UpgradeRecipe.MergePatterns)
|
||||
.rowB(MItemTags.DILITHIUM_GEMS)
|
||||
.row(MItems.PATTERN_DRIVE_NORMAL, MItemTags.ADVANCED_CIRCUIT, MItems.PATTERN_DRIVE_NORMAL)
|
||||
.rowB(MItemTags.DILITHIUM_GEMS)
|
||||
.unlockedBy(MItems.PATTERN_DRIVE_NORMAL)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_TRIPLE, category = machinesCategory)
|
||||
.setUpgradeSource(MItems.PATTERN_DRIVE_DOUBLE)
|
||||
.addUpgradeOps(UpgradeRecipe.MergePatterns)
|
||||
.row(Tags.Items.DUSTS_GLOWSTONE, MItemTags.DILITHIUM_GEMS, Tags.Items.DUSTS_GLOWSTONE)
|
||||
.row(MItems.PATTERN_DRIVE_DOUBLE, MItemTags.ADVANCED_CIRCUIT, MItems.PATTERN_DRIVE_DOUBLE)
|
||||
.row(Tags.Items.DUSTS_GLOWSTONE, MItemTags.DILITHIUM_GEMS, Tags.Items.DUSTS_GLOWSTONE)
|
||||
.unlockedBy(MItems.PATTERN_DRIVE_DOUBLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_QUAD, category = machinesCategory)
|
||||
.setUpgradeSource(MItems.PATTERN_DRIVE_TRIPLE)
|
||||
.addUpgradeOps(UpgradeRecipe.MergePatterns)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.DILITHIUM_GEMS)
|
||||
.row(MItems.PATTERN_DRIVE_TRIPLE, MItemTags.ADVANCED_CIRCUIT, MItems.PATTERN_DRIVE_TRIPLE)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.DILITHIUM_GEMS)
|
||||
.unlockedBy(MItems.PATTERN_DRIVE_TRIPLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_CABLE, count = 16, category = machinesCategory)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
.row(Items.REDSTONE, MItemTags.COPPER_WIRES, Items.REDSTONE)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.COPPER_WIRES)
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_NORMAL)
|
||||
.rowAC(MItemTags.ADVANCED_CIRCUIT, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItemTags.TRITANIUM_PLATES, MItemTags.ADVANCED_CIRCUIT)
|
||||
.rowAC(MItemTags.ADVANCED_CIRCUIT, MItemTags.ADVANCED_CIRCUIT)
|
||||
.unlockedBy(MItemTags.ADVANCED_CIRCUIT)
|
||||
.build(consumer)
|
||||
|
||||
// Машины
|
||||
MatteryRecipe(MItems.MATTER_RECYCLER[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.MATTER_RECYCLER[null]!!)
|
||||
.row(MItems.MATTER_CAPACITOR_PARTS, Items.HOPPER, MItemTags.BASIC_CIRCUIT)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItems.MATTER_CABLE, MItems.MATTER_IO_PORT, MItems.MATTER_CABLE)
|
||||
@ -178,21 +98,21 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.build(consumer)
|
||||
|
||||
// Блоки
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_BANK[null]!!, category = machinesCategory)
|
||||
.row(Tags.Items.GLASS_BLOCKS, MItemTags.IRON_PLATES, Tags.Items.GLASS_BLOCKS)
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_BANK[null]!!)
|
||||
.row(Tags.Items.GLASS, MItemTags.IRON_PLATES, Tags.Items.GLASS)
|
||||
.row(MItemTags.IRON_PLATES, MItems.MACHINE_FRAME, MItemTags.IRON_PLATES)
|
||||
.row(MItems.MATTER_CABLE, MItems.MATTER_IO_PORT, MItems.MATTER_CABLE)
|
||||
.unlockedBy(MItems.MATTER_CABLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.BATTERY_BANK[null]!!, category = machinesCategory)
|
||||
.row(Tags.Items.GLASS_BLOCKS, MItemTags.IRON_PLATES, Tags.Items.GLASS_BLOCKS)
|
||||
MatteryRecipe(MItems.BATTERY_BANK[null]!!)
|
||||
.row(Tags.Items.GLASS, MItemTags.IRON_PLATES, Tags.Items.GLASS)
|
||||
.row(MItemTags.IRON_PLATES, MItems.MACHINE_FRAME, MItemTags.IRON_PLATES)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.ENERGY_BUS, MItems.ELECTRIC_PARTS)
|
||||
.unlockedBy(MItems.ENERGY_BUS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.GRAVITATION_STABILIZER, category = machinesCategory)
|
||||
MatteryRecipe(MItems.GRAVITATION_STABILIZER)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.GRAVITATION_FIELD_SENSOR, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItems.MATTER_TRANSFORM_MATRIX, MItems.MACHINE_FRAME, MItems.MATTER_TRANSFORM_MATRIX)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.GRAVITATION_FIELD_LIMITER, MItemTags.TRITANIUM_PLATES)
|
||||
@ -200,7 +120,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItems.GRAVITATION_FIELD_SENSOR)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PORTABLE_GRAVITATION_STABILIZER, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.PORTABLE_GRAVITATION_STABILIZER)
|
||||
.rowB(MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.GRAVITATION_FIELD_SENSOR, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.GRAVITATION_FIELD_LIMITER, MItemTags.TRITANIUM_PLATES)
|
||||
@ -208,230 +128,242 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItems.GRAVITATION_FIELD_SENSOR)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.GRAVITATION_FIELD_SENSOR, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.GRAVITATION_FIELD_SENSOR)
|
||||
.rowB(MItemTags.BASIC_CIRCUIT)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ELECTROMAGNET, MItemTags.TRITANIUM_PLATES)
|
||||
.rowB(MItemTags.IRON_PLATES)
|
||||
.unlockedBy(MItems.ELECTROMAGNET)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.GRAVITATION_FIELD_LIMITER, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.GRAVITATION_FIELD_LIMITER)
|
||||
.row(Tags.Items.ENDER_PEARLS, MItemTags.ADVANCED_CIRCUIT, Tags.Items.ENDER_PEARLS)
|
||||
.row(MItemTags.GOLD_WIRES, MItems.QUANTUM_TRANSCEIVER, MItemTags.GOLD_WIRES)
|
||||
.rowB(MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItems.QUANTUM_TRANSCEIVER)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.BLACK_HOLE_SCANNER, category = RecipeCategory.TOOLS)
|
||||
.row(MItemTags.IRON_PLATES, MItems.DISPLAY_SCREEN, MItemTags.IRON_PLATES)
|
||||
MatteryRecipe(MItems.BLACK_HOLE_SCANNER)
|
||||
.row(MItemTags.IRON_PLATES, Tags.Items.GLASS_PANES_COLORLESS, MItemTags.IRON_PLATES)
|
||||
.row(MItemTags.GOLD_WIRES, MItems.GRAVITATION_FIELD_SENSOR, MItemTags.ADVANCED_CIRCUIT)
|
||||
.rowAC(Tags.Items.DUSTS_GLOWSTONE, MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItems.GRAVITATION_FIELD_SENSOR)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PHANTOM_ATTRACTOR, category = machinesCategory)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, Tags.Items.GLASS_BLOCKS_COLORLESS, Tags.Items.DUSTS_REDSTONE)
|
||||
MatteryRecipe(MItems.PHANTOM_ATTRACTOR)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, Tags.Items.GLASS_COLORLESS, Tags.Items.DUSTS_REDSTONE)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.QUANTUM_TRANSCEIVER, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, ItemTags.BEDS, MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItems.QUANTUM_TRANSCEIVER)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.QUANTUM_TRANSCEIVER, 2, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.QUANTUM_TRANSCEIVER, 2)
|
||||
.rowAC(MItemTags.COPPER_WIRES, MItemTags.COPPER_WIRES)
|
||||
.row(MItemTags.GOLD_WIRES, Tags.Items.ENDER_PEARLS, MItemTags.GOLD_WIRES)
|
||||
.row(MItemTags.GOLD_WIRES, MItems.ELECTROMAGNET, MItemTags.GOLD_WIRES)
|
||||
.unlockedBy(Tags.Items.ENDER_PEARLS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ELECTROMAGNET, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.ELECTROMAGNET)
|
||||
.row(MItemTags.COPPER_WIRES, Tags.Items.INGOTS_IRON, MItemTags.COPPER_WIRES)
|
||||
.unlockedBy(Tags.Items.INGOTS_IRON)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_SERVO[null]!!, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.ELECTROMOTOR)
|
||||
.rowB(MItems.ELECTROMAGNET)
|
||||
.row(MItems.ELECTROMAGNET, Tags.Items.INGOTS_IRON, MItems.ELECTROMAGNET)
|
||||
.row(MItemTags.COPPER_WIRES, Tags.Items.INGOTS_IRON, MItemTags.COPPER_WIRES)
|
||||
.unlockedBy(MItems.ELECTROMAGNET)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_SERVO[null]!!)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ENERGY_BUS, MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItems.ENERGY_BUS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MIRROR_COMPOUND, 3, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.MIRROR_COMPOUND, 3)
|
||||
.row(Tags.Items.GLASS_PANES_COLORLESS, Tags.Items.GLASS_PANES_COLORLESS, Tags.Items.GLASS_PANES_COLORLESS)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.IRON_PLATES, MItemTags.IRON_PLATES)
|
||||
.unlockedBy(MItemTags.IRON_PLATES)
|
||||
.unlockedBy(Tags.Items.GLASS_PANES_COLORLESS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.REINFORCED_TRITANIUM_PLATE, category = RecipeCategory.MISC)
|
||||
.rowB(MItemTags.CARBON_PLATES)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.CARBON_PLATES)
|
||||
.rowB(MItemTags.CARBON_PLATES)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
MatteryRecipe(MItems.REINFORCED_TRITANIUM_PLATE)
|
||||
.rowB(MItemTags.CARBON_PLATES)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.CARBON_PLATES)
|
||||
.rowB(MItemTags.CARBON_PLATES)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.REINFORCED_IRON_PLATE, category = RecipeCategory.MISC)
|
||||
.rowB(MItemTags.CARBON_PLATES)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.IRON_PLATES, MItemTags.CARBON_PLATES)
|
||||
.rowB(MItemTags.CARBON_PLATES)
|
||||
.unlockedBy(MItemTags.IRON_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ARMOR_ASSEMBLY, category = RecipeCategory.MISC)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.IRON_PLATES, MItemTags.CARBON_PLATES)
|
||||
.row(MItemTags.IRON_PLATES, Items.DIAMOND, MItemTags.IRON_PLATES)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.IRON_PLATES, MItemTags.CARBON_PLATES)
|
||||
.unlockedBy(MItemTags.IRON_PLATES)
|
||||
.unlockedBy(MItemTags.CARBON_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.CARBON_FIBRE_BLOCK, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MItems.CARBON_FIBRE_BLOCK)
|
||||
.rowAB(MItemTags.CARBON_PLATES, MItemTags.CARBON_PLATES)
|
||||
.rowAB(MItemTags.CARBON_PLATES, MItemTags.CARBON_PLATES)
|
||||
.unlockedBy(MItemTags.CARBON_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, MItems.CARBON_MESH, 4)
|
||||
ShapelessRecipeBuilder(MItems.CARBON_MESH, 4)
|
||||
.requires(Ingredient.of(MItems.CARBON_FIBRE_BLOCK))
|
||||
.unlockedBy(MItemTags.CARBON_PLATES)
|
||||
.unlockedBy(MItems.CARBON_FIBRE_BLOCK)
|
||||
.save(consumer, modLocation("carbon_mesh_from_block"))
|
||||
|
||||
// броня
|
||||
MatteryRecipe(MItems.TRITANIUM_HELMET, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.TRITANIUM_HELMET)
|
||||
.setUpgradeSource(Items.LEATHER_HELMET)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyEnchantments)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyComponent(DataComponents.CUSTOM_NAME))
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItems.ARMOR_ASSEMBLY, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.addUpgradeOps(
|
||||
UpgradeRecipe.Direct("display"),
|
||||
UpgradeRecipe.Direct("Enchantments"),
|
||||
)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_HELMET, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_PANTS, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.TRITANIUM_PANTS)
|
||||
.setUpgradeSource(Items.LEATHER_LEGGINGS)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyEnchantments)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyComponent(DataComponents.CUSTOM_NAME))
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItems.ARMOR_ASSEMBLY, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.addUpgradeOps(
|
||||
UpgradeRecipe.Direct("display"),
|
||||
UpgradeRecipe.Direct("Enchantments"),
|
||||
)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_LEGGINGS, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.rowAC(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_CHESTPLATE, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.TRITANIUM_CHESTPLATE)
|
||||
.setUpgradeSource(Items.LEATHER_CHESTPLATE)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyEnchantments)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyComponent(DataComponents.CUSTOM_NAME))
|
||||
.addUpgradeOps(
|
||||
UpgradeRecipe.Direct("display"),
|
||||
UpgradeRecipe.Direct("Enchantments"),
|
||||
)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_CHESTPLATE, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItems.ARMOR_ASSEMBLY, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_BOOTS, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.TRITANIUM_BOOTS)
|
||||
.setUpgradeSource(Items.LEATHER_BOOTS)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyEnchantments)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyComponent(DataComponents.CUSTOM_NAME))
|
||||
.addUpgradeOps(
|
||||
UpgradeRecipe.Direct("display"),
|
||||
UpgradeRecipe.Direct("Enchantments"),
|
||||
)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_BOOTS, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItems.ARMOR_ASSEMBLY, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.rowAC(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// простая броня
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_HELMET, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_HELMET)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_PANTS, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_PANTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_CHESTPLATE, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_CHESTPLATE)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_BOOTS, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.SIMPLE_TRITANIUM_BOOTS)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
// станция андроида
|
||||
MatteryRecipe(MItems.ANDROID_STATION[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.ANDROID_STATION[null]!!)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.QUANTUM_TRANSCEIVER, MItems.ELECTRIC_PARTS)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ELECTRIC_PARTS, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// беспроводной зарядник андроидов
|
||||
MatteryRecipe(MItems.ANDROID_CHARGER[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.ANDROID_CHARGER[null]!!)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.QUANTUM_TRANSCEIVER, MItems.ELECTRIC_PARTS)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// апгрейд на сетку крафта
|
||||
MatteryRecipe(MItems.ExopackUpgrades.CRAFTING_UPGRADE, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.ExopackUpgrades.CRAFTING_UPGRADE)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItemTags.ADVANCED_CIRCUIT, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItemTags.CRAFTING_TABLES, MItems.QUANTUM_TRANSCEIVER, MItemTags.CRAFTING_TABLES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// апгрейд на переплавку
|
||||
MatteryRecipe(MItems.ExopackUpgrades.SMELTING_UPGRADE, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.ExopackUpgrades.SMELTING_UPGRADE)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItemTags.ADVANCED_CIRCUIT, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(Items.FURNACE, MItems.QUANTUM_TRANSCEIVER, Items.FURNACE)
|
||||
.row(MItemTags.TRITANIUM_PLATES, Items.FURNACE, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// апгрейд на эндер сундук
|
||||
MatteryRecipe(MItems.ExopackUpgrades.ENDER_UPGRADE, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.ExopackUpgrades.ENDER_UPGRADE)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.ELECTROMAGNET, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItems.ELECTROMAGNET, Items.ENDER_CHEST, MItems.ELECTROMAGNET)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ELECTROMAGNET, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// генератор коблы
|
||||
MatteryRecipe(MItems.COBBLESTONE_GENERATOR[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.COBBLESTONE_GENERATOR[null]!!)
|
||||
.row(MItemTags.HARDENED_GLASS_COLORLESS, MItems.TRITANIUM_PICKAXE, MItemTags.HARDENED_GLASS_COLORLESS)
|
||||
.row(Items.LAVA_BUCKET, Items.HOPPER, Items.WATER_BUCKET)
|
||||
.rowB(Tags.Items.CHESTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_SHEARS, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.TRITANIUM_SHEARS)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.rowA(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_SHIELD, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.TRITANIUM_SHIELD)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.SHIELD, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.rowB(MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ESSENCE_STORAGE[null]!!, category = machinesCategory)
|
||||
ShapelessRecipeBuilder(MItems.TRITANIUM_NUGGET, 9)
|
||||
.requires(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_NUGGETS)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(MItems.TRITANIUM_INGOT, 1)
|
||||
.requires(Ingredient.of(MItemTags.TRITANIUM_NUGGETS), 9)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_NUGGETS)
|
||||
.save(consumer, modLocation("ingot_from_nuggets"))
|
||||
|
||||
MatteryRecipe(MItems.ESSENCE_STORAGE[null]!!)
|
||||
.row(MItems.MATTER_CAPACITOR_PARTS, Items.ENDER_EYE, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.GOLD_WIRES, MItemTags.HARDENED_GLASS, MItemTags.HARDENED_GLASS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ESSENCE_SERVO, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.ESSENCE_SERVO)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.QUANTUM_TRANSCEIVER, MItemTags.TRITANIUM_PLATES)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.build(consumer)
|
||||
|
||||
for ((dye, item) in MItems.MATTER_REPLICATOR) {
|
||||
MatteryRecipe(MItems.MATTER_RECONSTRUCTOR[dye]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.MATTER_RECONSTRUCTOR[dye]!!)
|
||||
.setUpgradeSource(item)
|
||||
.addUpgradeOps(
|
||||
UpgradeRecipe.CopyTileComponent(MatteryBlockEntity.ENERGY_KEY, "energy"),
|
||||
UpgradeRecipe.CopyTileComponent(MatteryBlockEntity.MATTER_STORAGE_KEY, "matter"),
|
||||
UpgradeRecipe.Indirect("BlockEntityTag.${MatteryBlockEntity.ENERGY_KEY}", "BlockEntityTag.energy"),
|
||||
UpgradeRecipe.Indirect("BlockEntityTag.${MatteryBlockEntity.MATTER_STORAGE_KEY}", "BlockEntityTag.matter"),
|
||||
)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, Tags.Items.GEMS_EMERALD, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItems.ELECTRIC_PARTS, item, MItems.ELECTRIC_PARTS)
|
||||
@ -439,13 +371,13 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.build(consumer)
|
||||
}
|
||||
|
||||
MatteryRecipe(MItems.MATTER_SCANNER[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.MATTER_SCANNER[null]!!)
|
||||
.row(MItems.MIRROR, MItems.MATTER_TRANSFORM_MATRIX, MItems.MIRROR)
|
||||
.row(MItemTags.HARDENED_GLASS_COLORLESS, MItems.MACHINE_FRAME, MItemTags.HARDENED_GLASS_COLORLESS)
|
||||
.row(MItems.MATTER_CABLE, MItemTags.ADVANCED_CIRCUIT, MItems.MATTER_CABLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.FLUID_CAPSULE, category = RecipeCategory.TOOLS, count = 8)
|
||||
MatteryRecipe(MItems.FLUID_CAPSULE, count = 8)
|
||||
.row(MItemTags.TRITANIUM_NUGGETS, MItemTags.TRITANIUM_NUGGETS, MItemTags.TRITANIUM_NUGGETS)
|
||||
.rowB(MItemTags.HARDENED_GLASS_PANES)
|
||||
.row(MItemTags.TRITANIUM_NUGGETS, MItemTags.TRITANIUM_NUGGETS, MItemTags.TRITANIUM_NUGGETS)
|
||||
@ -453,7 +385,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItemTags.TRITANIUM_NUGGETS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.FLUID_TANK, category = RecipeCategory.DECORATIONS)
|
||||
MatteryRecipe(MItems.FLUID_TANK)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.HARDENED_GLASS_PANES, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAC(MItemTags.HARDENED_GLASS_PANES, MItemTags.HARDENED_GLASS_PANES)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.HARDENED_GLASS_PANES, MItemTags.TRITANIUM_INGOTS)
|
||||
@ -461,136 +393,42 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.EXPLOSIVE_HAMMER, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.EXPLOSIVE_HAMMER)
|
||||
.rowB(Tags.Items.INGOTS_IRON)
|
||||
.rowAB(Tags.Items.INGOTS_IRON, Tags.Items.RODS_WOODEN)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(Items.FLINT_AND_STEEL)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.POWERED_FURNACE[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.POWERED_FURNACE[null]!!)
|
||||
.row(Items.FURNACE, MItems.MACHINE_FRAME, Items.FURNACE)
|
||||
.unlockedBy(MItems.MACHINE_FRAME)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.POWERED_SMOKER[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.POWERED_SMOKER[null]!!)
|
||||
.rowAC(Items.FURNACE, Items.FURNACE)
|
||||
.row(MItems.ELECTROMAGNET, MItems.MACHINE_FRAME, MItems.ELECTROMAGNET)
|
||||
.unlockedBy(MItems.MACHINE_FRAME)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.POWERED_BLAST_FURNACE[null]!!, category = machinesCategory)
|
||||
MatteryRecipe(MItems.POWERED_BLAST_FURNACE[null]!!)
|
||||
.row(MItems.ELECTROMAGNET, Items.FURNACE, MItems.ELECTROMAGNET)
|
||||
.row(MItems.ELECTROMAGNET, MItems.MACHINE_FRAME, MItems.ELECTROMAGNET)
|
||||
.row(MItems.ELECTROMAGNET, Items.FURNACE, MItems.ELECTROMAGNET)
|
||||
.unlockedBy(MItems.MACHINE_FRAME)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.INFINITE_WATER_SOURCE, category = machinesCategory)
|
||||
MatteryRecipe(MItems.INFINITE_WATER_SOURCE)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.IRON_PLATES, MItemTags.IRON_PLATES)
|
||||
.rowAC(Items.WATER_BUCKET, Items.WATER_BUCKET)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.IRON_PLATES, MItemTags.IRON_PLATES)
|
||||
.unlockedBy(Items.WATER_BUCKET)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PAINTER, category = machinesCategory)
|
||||
.row(Items.BRUSH, Items.BUCKET, Items.BUCKET)
|
||||
MatteryRecipe(MItems.PAINTER)
|
||||
.row(Tags.Items.RODS_WOODEN, Items.BUCKET, Items.BUCKET)
|
||||
.row(MItemTags.IRON_PLATES, Items.BUCKET, MItemTags.IRON_PLATES)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.CRAFTING_TABLES, MItemTags.IRON_PLATES)
|
||||
.unlockedBy(Tags.Items.DYES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_ENTANGLER, category = machinesCategory)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.MATTER_TRANSFORM_MATRIX, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItems.MATTER_CAPACITOR_PARTS, MItems.MACHINE_FRAME, MItems.MATTER_IO_PORT)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItems.ANTIMATTER_TRANSFORM_MATRIX, MItemTags.DILITHIUM_GEMS)
|
||||
.unlockedBy(MItems.ANTIMATTER_TRANSFORM_MATRIX)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.CHEST_UPGRADER, category = RecipeCategory.TOOLS)
|
||||
.rowAC(Items.REDSTONE, Items.REDSTONE)
|
||||
.row(MItemTags.TRITANIUM_PLATES, Items.ENDER_PEARL, MItemTags.TRITANIUM_PLATES)
|
||||
.rowB(ItemTags.STONE_BUTTONS)
|
||||
.unlockedBy(Tags.Items.CHESTS_WOODEN)
|
||||
.unlockedBy(Tags.Items.BARRELS_WOODEN)
|
||||
.unlockedBy(MItemTags.CARGO_CRATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.CRUDE]!!, category = machinesCategory, count = 8)
|
||||
.row(Tags.Items.INGOTS_IRON, Items.REDSTONE, Tags.Items.INGOTS_IRON)
|
||||
.unlockedBy(Items.REDSTONE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.REGULAR]!!, category = machinesCategory, count = 16)
|
||||
.row(MItemTags.COPPER_WIRES, MItemTags.COPPER_WIRES, MItemTags.COPPER_WIRES)
|
||||
.row(MItemTags.IRON_PLATES, Items.REDSTONE, MItemTags.IRON_PLATES)
|
||||
.row(MItemTags.COPPER_WIRES, MItemTags.COPPER_WIRES, MItemTags.COPPER_WIRES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.ADVANCED]!!, category = machinesCategory, count = 16)
|
||||
.row(MItemTags.GOLD_WIRES, MItemTags.COPPER_WIRES, MItemTags.GOLD_WIRES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, Items.REDSTONE, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.GOLD_WIRES, MItemTags.COPPER_WIRES, MItemTags.GOLD_WIRES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_CABLES[CablesConfig.E.SUPERCONDUCTOR]!!, category = machinesCategory)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItems.ELECTROMAGNET, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.row(Tags.Items.INGOTS_GOLD, Tags.Items.INGOTS_GOLD, Tags.Items.INGOTS_GOLD)
|
||||
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.BLUE_ICE, MItemTags.REINFORCED_TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
val ironRod = ItemTags.create(ResourceLocation("c", "rods/iron"))
|
||||
var condConsumer = consumer.withConditions(NotCondition(TagEmptyCondition(ironRod)))
|
||||
|
||||
for ((color, item) in MItems.GRILL) {
|
||||
MatteryRecipe(item, category = RecipeCategory.DECORATIONS)
|
||||
.rowB(color?.tag)
|
||||
.row(Tags.Items.INGOTS_IRON, Tags.Items.INGOTS_IRON, Tags.Items.INGOTS_IRON)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(item, category = RecipeCategory.DECORATIONS)
|
||||
.rowB(color?.tag)
|
||||
.row(ironRod, ironRod, ironRod)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.build(condConsumer, "grill_alt_a/${color?.name?.lowercase() ?: "default"}")
|
||||
|
||||
MatteryRecipe(item, category = RecipeCategory.DECORATIONS)
|
||||
.rowB(color?.tag)
|
||||
.row(ironRod, ironRod, ironRod)
|
||||
.rowB(MItemTags.TRITANIUM_PLATES)
|
||||
.build(condConsumer, "grill_alt_b/${color?.name?.lowercase() ?: "default"}")
|
||||
|
||||
MatteryRecipe(item, category = RecipeCategory.DECORATIONS)
|
||||
.rowB(color?.tag)
|
||||
.row(Tags.Items.INGOTS_IRON, Tags.Items.INGOTS_IRON, Tags.Items.INGOTS_IRON)
|
||||
.rowB(MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer, "grill_alt_c/${color?.name?.lowercase() ?: "default"}")
|
||||
}
|
||||
|
||||
MatteryRecipe(MItems.REDSTONE_INTERACTOR, category = RecipeCategory.TOOLS)
|
||||
.rowAB(Items.LEVER, Tags.Items.NUGGETS_IRON)
|
||||
.rowB(Tags.Items.DUSTS_REDSTONE)
|
||||
.unlockedBy(Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer)
|
||||
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, ItemStack(MItems.DILITHIUM_CRYSTAL_BLOCK))
|
||||
.requires(MItems.DILITHIUM_CRYSTAL, 9)
|
||||
.unlockedBy(MItems.DILITHIUM_CRYSTAL)
|
||||
.unlockedBy(MItems.DILITHIUM_CRYSTAL_BLOCK)
|
||||
.save(consumer, modLocation("dilithium_crystal/to_block"))
|
||||
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ItemStack(MItems.DILITHIUM_CRYSTAL, 9))
|
||||
.requires(MItems.DILITHIUM_CRYSTAL_BLOCK)
|
||||
.unlockedBy(MItems.DILITHIUM_CRYSTAL)
|
||||
.unlockedBy(MItems.DILITHIUM_CRYSTAL_BLOCK)
|
||||
.save(consumer, modLocation("dilithium_crystal/from_block"))
|
||||
|
||||
MatteryRecipe(MItems.CONFIGURATOR, category = RecipeCategory.TOOLS)
|
||||
.rowA(MItemTags.IRON_PLATES)
|
||||
.row(Tags.Items.GLASS_PANES, Tags.Items.DUSTS_REDSTONE, MItems.DISPLAY_SCREEN)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.BASIC_CIRCUIT, MItems.DILITHIUM_CRYSTAL)
|
||||
.unlockedBy(MItems.DILITHIUM_CRYSTAL)
|
||||
.unlockedBy(MItems.DISPLAY_SCREEN)
|
||||
.build(consumer)
|
||||
}
|
||||
|
@ -1,22 +1,21 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.*
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
private fun stairs(base: ItemLike, result: ItemLike, consumer: RecipeOutput) {
|
||||
MatteryRecipe(result, 4, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(result, 4)
|
||||
.rowA(base)
|
||||
.rowAB(base, base)
|
||||
.row(base, base, base)
|
||||
@ -25,14 +24,14 @@ private fun stairs(base: ItemLike, result: ItemLike, consumer: RecipeOutput) {
|
||||
}
|
||||
|
||||
private fun slab(base: ItemLike, result: ItemLike, consumer: RecipeOutput) {
|
||||
MatteryRecipe(result, 6, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(result, 6)
|
||||
.row(base, base, base)
|
||||
.unlockedBy(base)
|
||||
.build(consumer, modLocation("decorative/slabs/${base.asItem().registryName!!.path}"))
|
||||
}
|
||||
|
||||
private fun wall(base: ItemLike, result: ItemLike, consumer: RecipeOutput) {
|
||||
MatteryRecipe(result, 6, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(result, 6)
|
||||
.row(base, base, base)
|
||||
.row(base, base, base)
|
||||
.unlockedBy(base)
|
||||
@ -41,7 +40,7 @@ private fun wall(base: ItemLike, result: ItemLike, consumer: RecipeOutput) {
|
||||
|
||||
private fun cut(base: ItemLike, result: ItemLike, amount: Int, consumer: RecipeOutput) {
|
||||
SingleItemRecipeBuilder
|
||||
.stonecutting(Ingredient.of(base), RecipeCategory.BUILDING_BLOCKS, result, amount)
|
||||
.stonecutting(Ingredient.of(base), result, amount)
|
||||
.unlockedBy(base)
|
||||
.save(consumer, modLocation("stonecutting/${result.asItem().registryName!!.path}_from_${base.asItem().registryName!!.path}"))
|
||||
}
|
||||
@ -72,7 +71,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
.build(consumer, modLocation("decorative/floor_tiles/unrefined/${color.name.lowercase()}"))
|
||||
|
||||
if (color != DyeColor.WHITE)
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, unrefinedItem, 8)
|
||||
ShapelessRecipeBuilder(unrefinedItem, 8)
|
||||
.requires(Ingredient.of(MRegistry.UNREFINED_FLOOR_TILES.getItem(DyeColor.WHITE)), 8)
|
||||
.requires(color.tag)
|
||||
.unlockedBy(MRegistry.UNREFINED_FLOOR_TILES.getItem(DyeColor.WHITE))
|
||||
@ -82,7 +81,6 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
for ((color, refinedItem) in MRegistry.FLOOR_TILES.items) {
|
||||
SimpleCookingRecipeBuilder.smelting(
|
||||
Ingredient.of(MRegistry.UNREFINED_FLOOR_TILES.items[color]!!),
|
||||
RecipeCategory.BUILDING_BLOCKS,
|
||||
refinedItem,
|
||||
0.15f,
|
||||
100
|
||||
@ -90,7 +88,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
.save(consumer, modLocation("decorative/floor_tiles/refined/${color.name.lowercase()}"))
|
||||
|
||||
if (color != DyeColor.WHITE)
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, refinedItem, 8)
|
||||
ShapelessRecipeBuilder(refinedItem, 8)
|
||||
.requires(Ingredient.of(MRegistry.FLOOR_TILES.getItem(DyeColor.WHITE)), 8)
|
||||
.requires(color.tag)
|
||||
.unlockedBy(MRegistry.FLOOR_TILES.getItem(DyeColor.WHITE))
|
||||
@ -110,11 +108,9 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
wallWithCut(item, MRegistry.TRITANIUM_STRIPED_WALL.getItem(a, b), consumer)
|
||||
}
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
stairsWithCut(MItems.TRITANIUM_STRIPED_BLOCK[color]!!, MItems.TRITANIUM_STRIPED_STAIRS[color]!!, consumer)
|
||||
slabWithCut(MItems.TRITANIUM_STRIPED_BLOCK[color]!!, MItems.TRITANIUM_STRIPED_SLAB[color]!!, consumer)
|
||||
wallWithCut(MItems.TRITANIUM_STRIPED_BLOCK[color]!!, MItems.TRITANIUM_STRIPED_WALL[color]!!, consumer)
|
||||
}
|
||||
stairsWithCut(MItems.TRITANIUM_STRIPED_BLOCK, MItems.TRITANIUM_STRIPED_STAIRS, consumer)
|
||||
slabWithCut(MItems.TRITANIUM_STRIPED_BLOCK, MItems.TRITANIUM_STRIPED_SLAB, consumer)
|
||||
wallWithCut(MItems.TRITANIUM_STRIPED_BLOCK, MItems.TRITANIUM_STRIPED_WALL, consumer)
|
||||
|
||||
for ((color, item) in MRegistry.FLOOR_TILES.items) {
|
||||
stairsWithCut(item, MRegistry.FLOOR_TILES_STAIRS.items[color]!!, consumer)
|
||||
@ -126,7 +122,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
|
||||
val original = MRegistry.TRITANIUM_BLOCK.items[base]!!
|
||||
|
||||
MatteryRecipe(item, 8, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(item, 8)
|
||||
.row(original, original, original)
|
||||
.row(original, stripe.tag, original)
|
||||
.row(original, original, original)
|
||||
@ -134,21 +130,21 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
.build(consumer, modLocation("decorative/tritanium/striped/${base.name.lowercase()}_${stripe.name.lowercase()}"))
|
||||
}
|
||||
|
||||
MatteryRecipe(MItems.DANGER_STRIPE_BLOCK, 24, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MItems.DANGER_STRIPE_BLOCK, 24)
|
||||
.rowAB(Tags.Items.DYES_YELLOW, Tags.Items.INGOTS_IRON)
|
||||
.row(Tags.Items.INGOTS_IRON, Tags.Items.COBBLESTONES, Tags.Items.INGOTS_IRON)
|
||||
.row(Tags.Items.INGOTS_IRON, Tags.Items.COBBLESTONE, Tags.Items.INGOTS_IRON)
|
||||
.rowBC(Tags.Items.INGOTS_IRON, Tags.Items.DYES_BLACK)
|
||||
.unlockedBy(Tags.Items.INGOTS_IRON)
|
||||
.unlockedBy(Tags.Items.DYES_BLACK)
|
||||
.build(consumer, modLocation("decorative/danger_stripe"))
|
||||
|
||||
MatteryRecipe(MItems.METAL_BEAM, 24, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MItems.METAL_BEAM, 24)
|
||||
.rowB(Tags.Items.INGOTS_IRON)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Tags.Items.COBBLESTONES, MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Tags.Items.COBBLESTONE, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(Tags.Items.INGOTS_IRON)
|
||||
.build(consumer, modLocation("decorative/metal_beam"))
|
||||
|
||||
MatteryRecipe(MRegistry.VENT.item, 24, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MRegistry.VENT.item, 24)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Items.IRON_BARS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
@ -156,7 +152,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
.build(consumer, modLocation("decorative/vent/default"))
|
||||
|
||||
for ((color, item) in MRegistry.VENT.items) {
|
||||
MatteryRecipe(item, 8, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(item, 8)
|
||||
.row(MRegistry.VENT.item, MRegistry.VENT.item, MRegistry.VENT.item)
|
||||
.row(MRegistry.VENT.item, color.tag, MRegistry.VENT.item)
|
||||
.row(MRegistry.VENT.item, MRegistry.VENT.item, MRegistry.VENT.item)
|
||||
@ -168,29 +164,24 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
for ((color, item) in MRegistry.VENT_ALTERNATIVE.allItems) {
|
||||
val other = MRegistry.VENT.allItems[color]!!
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, item, 1).requires(other)
|
||||
ShapelessRecipeBuilder(item, 1).requires(other)
|
||||
.unlockedBy(item)
|
||||
.save(consumer, modLocation("decorative/vent/to_alt/${color?.name?.lowercase() ?: "default"}"))
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, other, 1).requires(item)
|
||||
ShapelessRecipeBuilder(other, 1).requires(item)
|
||||
.unlockedBy(other)
|
||||
.save(consumer, modLocation("decorative/vent/from_alt/${color?.name?.lowercase() ?: "default"}"))
|
||||
}
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MItems.METAL_BEAM_CENTER, 1).requires(MItems.METAL_BEAM)
|
||||
.unlockedBy(MItems.METAL_BEAM)
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MItems.METAL_BEAM, 1).requires(MItems.METAL_BEAM_CENTER)
|
||||
.unlockedBy(MItems.METAL_BEAM_CENTER)
|
||||
|
||||
MatteryRecipe(MRegistry.DECORATIVE_CRATE.item, 24, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MRegistry.DECORATIVE_CRATE.item, 24)
|
||||
.rowB(Tags.Items.INGOTS_IRON)
|
||||
.row(Tags.Items.INGOTS_IRON, Tags.Items.COBBLESTONES, Tags.Items.INGOTS_IRON)
|
||||
.row(Tags.Items.INGOTS_IRON, Tags.Items.COBBLESTONE, Tags.Items.INGOTS_IRON)
|
||||
.rowB(Tags.Items.INGOTS_IRON)
|
||||
.unlockedBy(Tags.Items.INGOTS_IRON)
|
||||
.build(consumer, modLocation("decorative/crate/rusty"))
|
||||
|
||||
for ((color, crate) in MRegistry.DECORATIVE_CRATE.items) {
|
||||
MatteryRecipe(crate, 8, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(crate, 8)
|
||||
.row(MRegistry.DECORATIVE_CRATE.item, MRegistry.DECORATIVE_CRATE.item, MRegistry.DECORATIVE_CRATE.item)
|
||||
.row(MRegistry.DECORATIVE_CRATE.item, color.tag, MRegistry.DECORATIVE_CRATE.item)
|
||||
.row(MRegistry.DECORATIVE_CRATE.item, MRegistry.DECORATIVE_CRATE.item, MRegistry.DECORATIVE_CRATE.item)
|
||||
@ -199,7 +190,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
}
|
||||
|
||||
for ((color, item) in MRegistry.TRITANIUM_BLOCK.items) {
|
||||
MatteryRecipe(item, 8, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(item, 8)
|
||||
.row(MRegistry.TRITANIUM_BLOCK.item, MRegistry.TRITANIUM_BLOCK.item, MRegistry.TRITANIUM_BLOCK.item)
|
||||
.row(MRegistry.TRITANIUM_BLOCK.item, color.tag, MRegistry.TRITANIUM_BLOCK.item)
|
||||
.row(MRegistry.TRITANIUM_BLOCK.item, MRegistry.TRITANIUM_BLOCK.item, MRegistry.TRITANIUM_BLOCK.item)
|
||||
@ -208,14 +199,14 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
.build(consumer, modLocation("decorative/tritanium/default/${color.name.lowercase()}"))
|
||||
}
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MRegistry.INDUSTRIAL_GLASS.item, 8)
|
||||
ShapelessRecipeBuilder(MRegistry.INDUSTRIAL_GLASS.item, 8)
|
||||
.requires(Items.GLASS, 8)
|
||||
.requires(MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy("has_plate", has(MItemTags.TRITANIUM_PLATES))
|
||||
.unlockedBy("has_glass", has(Items.GLASS))
|
||||
.save(consumer, modLocation("decorative/industrial_glass/default"))
|
||||
|
||||
ShapedRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MRegistry.INDUSTRIAL_GLASS_PANE.item, 16)
|
||||
ShapedRecipeBuilder(MRegistry.INDUSTRIAL_GLASS_PANE.item, 16)
|
||||
.define('#', MRegistry.INDUSTRIAL_GLASS.item)
|
||||
.pattern("###").pattern("###")
|
||||
.unlockedBy("has_tritanium_glass", has(MRegistry.INDUSTRIAL_GLASS.item))
|
||||
@ -240,155 +231,107 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
DyeColor.BLACK to Items.BLACK_STAINED_GLASS,
|
||||
)
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
for (color in DyeColor.values()) {
|
||||
val item = MRegistry.INDUSTRIAL_GLASS.items[color]!!
|
||||
val paneItem = MRegistry.INDUSTRIAL_GLASS_PANE.items[color]!!
|
||||
val mappedVanilla = mappingUpgradeVanilla[color]!!
|
||||
|
||||
// обычная покраска
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, item, 8)
|
||||
ShapelessRecipeBuilder(item, 8)
|
||||
.requires(MRegistry.INDUSTRIAL_GLASS.item, 8)
|
||||
.requires(color.tag)
|
||||
.unlockedBy("has_tritanium_glass", has(MRegistry.INDUSTRIAL_GLASS.item))
|
||||
.save(consumer, modLocation("decorative/industrial_glass/recolor/${color.name.lowercase()}"))
|
||||
|
||||
// апгрейд ванильного крашенного стекла
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, item, 8)
|
||||
ShapelessRecipeBuilder(item, 8)
|
||||
.requires(mappedVanilla, 8)
|
||||
.requires(MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy("has_plate", has(MItemTags.TRITANIUM_PLATES))
|
||||
.unlockedBy("has_colored_glass", has(mappedVanilla))
|
||||
.save(consumer, modLocation("decorative/industrial_glass/upgrade/${color.name.lowercase()}"))
|
||||
|
||||
ShapedRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, paneItem, 16)
|
||||
ShapedRecipeBuilder(paneItem, 16)
|
||||
.define('#', item)
|
||||
.pattern("###").pattern("###")
|
||||
.unlockedBy("has_colored_tritanium_glass", has(paneItem))
|
||||
.save(consumer, modLocation("decorative/industrial_glass_pane/${color.name.lowercase()}"))
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, paneItem, 8)
|
||||
ShapelessRecipeBuilder(paneItem, 8)
|
||||
.requires(MRegistry.INDUSTRIAL_GLASS_PANE.item, 8)
|
||||
.requires(color.tag)
|
||||
.unlockedBy("has_tritanium_glass_pane", has(MRegistry.INDUSTRIAL_GLASS_PANE.item))
|
||||
.save(consumer, modLocation("decorative/industrial_glass_pane/recolor/${color.name.lowercase()}"))
|
||||
}
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.REDSTONE, MItems.REDSTONE_LAMP_INVERTED, 1)
|
||||
.requires(Items.REDSTONE_LAMP)
|
||||
.unlockedBy(Items.REDSTONE_LAMP)
|
||||
.save(consumer, modLocation("decorative/inverted_redstone_lamp"))
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.REDSTONE, Items.REDSTONE_LAMP, 1)
|
||||
.requires(MItems.REDSTONE_LAMP_INVERTED)
|
||||
.unlockedBy(MItems.REDSTONE_LAMP_INVERTED)
|
||||
.save(consumer, modLocation("decorative/inverted_redstone_lamp2"))
|
||||
|
||||
MatteryRecipe(MItems.REINFORCED_REDSTONE_LAMP, category = RecipeCategory.REDSTONE)
|
||||
.row(MItemTags.TRITANIUM_PLATES, Items.REDSTONE_LAMP, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer, modLocation("decorative/reinforced_redstone_lamp"))
|
||||
|
||||
MatteryRecipe(MItems.REINFORCED_REDSTONE_LAMP_INVERTED, category = RecipeCategory.REDSTONE)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.REDSTONE_LAMP_INVERTED, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer, modLocation("decorative/reinforced_redstone_lamp_inverted"))
|
||||
|
||||
MatteryRecipe(MItems.LABORATORY_LAMP, category = RecipeCategory.REDSTONE)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.HARDENED_GLASS_PANES_COLORLESS, MItemTags.IRON_PLATES)
|
||||
.row(MItems.MIRROR, Items.REDSTONE_LAMP, MItems.MIRROR)
|
||||
.row(MItemTags.TRITANIUM_PLATES, Tags.Items.DUSTS_REDSTONE, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer, modLocation("decorative/lab_lamp"))
|
||||
|
||||
MatteryRecipe(MItems.LABORATORY_LAMP, category = RecipeCategory.REDSTONE)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.HARDENED_GLASS_PANES_COLORLESS, MItemTags.IRON_PLATES)
|
||||
.row(MItems.MIRROR, MItems.REINFORCED_REDSTONE_LAMP, MItems.MIRROR)
|
||||
.rowB(Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer, modLocation("decorative/lab_lamp_alt"))
|
||||
|
||||
MatteryRecipe(MItems.LABORATORY_LAMP_INVERTED, category = RecipeCategory.REDSTONE)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.HARDENED_GLASS_PANES_COLORLESS, MItemTags.IRON_PLATES)
|
||||
.row(MItems.MIRROR, MItems.REINFORCED_REDSTONE_LAMP_INVERTED, MItems.MIRROR)
|
||||
.rowB(Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer, modLocation("decorative/lab_lamp_inv_alt"))
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.REDSTONE, MItems.LABORATORY_LAMP, 1)
|
||||
ShapelessRecipeBuilder(MItems.LABORATORY_LAMP, 1)
|
||||
.requires(MItems.LABORATORY_LAMP_INVERTED)
|
||||
.unlockedBy(MItems.LABORATORY_LAMP_INVERTED)
|
||||
.save(consumer, MItems.LABORATORY_LAMP.registryName!!.toString() + "_inv")
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.REDSTONE, MItems.LABORATORY_LAMP_INVERTED, 1)
|
||||
ShapelessRecipeBuilder(MItems.LABORATORY_LAMP_INVERTED, 1)
|
||||
.requires(MItems.LABORATORY_LAMP)
|
||||
.unlockedBy(MItems.LABORATORY_LAMP)
|
||||
.save(consumer, MItems.LABORATORY_LAMP_INVERTED.registryName!!.toString() + "_inv")
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.REDSTONE, MItems.REINFORCED_REDSTONE_LAMP, 1)
|
||||
.requires(MItems.REINFORCED_REDSTONE_LAMP_INVERTED)
|
||||
.unlockedBy(MItems.REINFORCED_REDSTONE_LAMP_INVERTED)
|
||||
.save(consumer, MItems.REINFORCED_REDSTONE_LAMP_INVERTED.registryName!!.toString() + "_inv")
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.REDSTONE, MItems.REINFORCED_REDSTONE_LAMP_INVERTED, 1)
|
||||
.requires(MItems.REINFORCED_REDSTONE_LAMP)
|
||||
.unlockedBy(MItems.REINFORCED_REDSTONE_LAMP)
|
||||
.save(consumer, MItems.REINFORCED_REDSTONE_LAMP.registryName!!.toString() + "_inv")
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
MatteryRecipe(MBlocks.TRITANIUM_STRIPED_BLOCK[color]!!, 24, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Tags.Items.COBBLESTONES, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAB(color.tag, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(color.tag)
|
||||
.build(consumer, modLocation("decorative/blocks/striped_default_${color.name.lowercase()}"))
|
||||
}
|
||||
|
||||
MatteryRecipe(MRegistry.TRITANIUM_BLOCK.item, 24, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MBlocks.TRITANIUM_STRIPED_BLOCK, 24)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Tags.Items.COBBLESTONES, MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Tags.Items.COBBLESTONE, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAB(Tags.Items.DYES_YELLOW, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(Tags.Items.DYES_YELLOW)
|
||||
.build(consumer, modLocation("decorative/blocks/striped_default"))
|
||||
|
||||
MatteryRecipe(MRegistry.TRITANIUM_BLOCK.item, 24)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Tags.Items.COBBLESTONE, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer, modLocation("decorative/blocks/default"))
|
||||
|
||||
MatteryRecipe(MBlocks.TRITANIUM_DOOR[null]!!, 3, category = RecipeCategory.REDSTONE)
|
||||
MatteryRecipe(MBlocks.TRITANIUM_DOOR[null]!!, 3)
|
||||
.rowAB(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAB(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAB(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer, modLocation("decorative/doors/default"))
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.REDSTONE, MItems.TRITANIUM_DOOR[color]!!, 1)
|
||||
for (color in DyeColor.values()) {
|
||||
ShapelessRecipeBuilder.shapeless(MItems.TRITANIUM_DOOR[color]!!, 1)
|
||||
.requires(Ingredient.of(MItems.TRITANIUM_DOOR.entries.stream().filter { it.key != color }.map { ItemStack(it.value) }))
|
||||
.requires(color.tag)
|
||||
.unlockedBy(MItems.TRITANIUM_DOOR.entries.stream().filter { it.key != color }.map { it.value })
|
||||
.save(consumer, modLocation("decorative/doors/${color.name.lowercase()}"))
|
||||
}
|
||||
|
||||
MatteryRecipe(MBlocks.TRITANIUM_TRAPDOOR[null]!!, category = RecipeCategory.REDSTONE)
|
||||
MatteryRecipe(MBlocks.TRITANIUM_TRAPDOOR[null]!!)
|
||||
.rowAB(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAB(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer, modLocation("decorative/trapdoors/default"))
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.REDSTONE, MItems.TRITANIUM_TRAPDOOR[color]!!, 1)
|
||||
for (color in DyeColor.values()) {
|
||||
ShapelessRecipeBuilder.shapeless(MItems.TRITANIUM_TRAPDOOR[color]!!, 1)
|
||||
.requires(Ingredient.of(MItems.TRITANIUM_TRAPDOOR.entries.stream().filter { it.key != color }.map { ItemStack(it.value) }))
|
||||
.requires(color.tag)
|
||||
.unlockedBy(MItems.TRITANIUM_TRAPDOOR.entries.stream().filter { it.key != color }.map { it.value })
|
||||
.save(consumer, modLocation("decorative/trapdoors/${color.name.lowercase()}"))
|
||||
}
|
||||
|
||||
MatteryRecipe(MRegistry.TRITANIUM_PRESSURE_PLATE.item, category = RecipeCategory.REDSTONE)
|
||||
MatteryRecipe(MRegistry.TRITANIUM_PRESSURE_PLATE.item)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.BASIC_CIRCUIT, MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer, modLocation("pressure_plates/default"))
|
||||
|
||||
for (dye in DyeColor.entries) {
|
||||
ShapelessRecipeBuilder(RecipeCategory.REDSTONE, MRegistry.TRITANIUM_PRESSURE_PLATE.getItem(dye), 1)
|
||||
for (dye in DyeColor.values()) {
|
||||
ShapelessRecipeBuilder(MRegistry.TRITANIUM_PRESSURE_PLATE.getItem(dye), 1)
|
||||
.requires(Ingredient.of(MRegistry.TRITANIUM_PRESSURE_PLATE.allItems.entries.stream().filter { it.key != dye }.map { ItemStack(it.value) }))
|
||||
.requires(dye.tag)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.save(consumer, modLocation("pressure_plates/${dye.name.lowercase()}"))
|
||||
}
|
||||
|
||||
MatteryRecipe(MItems.ENGINE, count = 9, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MItems.ENGINE, count = 9)
|
||||
.rowAC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, Items.FLINT_AND_STEEL, MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItems.MATTER_CABLE, MItemTags.TRITANIUM_INGOTS)
|
||||
@ -396,7 +339,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
.unlockedBy(Items.FLINT_AND_STEEL)
|
||||
.build(consumer, modLocation("decorative/engine"))
|
||||
|
||||
MatteryRecipe(MItems.METAL_MESH, count = 12, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
MatteryRecipe(MItems.METAL_MESH, count = 12)
|
||||
.row(Tags.Items.NUGGETS_IRON, Items.IRON_BARS, Tags.Items.NUGGETS_IRON)
|
||||
.rowAC(Items.IRON_BARS, Items.IRON_BARS)
|
||||
.row(Tags.Items.NUGGETS_IRON, Items.IRON_BARS, Tags.Items.NUGGETS_IRON)
|
||||
@ -404,49 +347,28 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
||||
.unlockedBy(Items.IRON_BARS)
|
||||
.build(consumer, modLocation("decorative/metal_mesh"))
|
||||
|
||||
MatteryRecipe(MItems.METAL_RAILING, count = 16, category = RecipeCategory.BUILDING_BLOCKS)
|
||||
.row(MItems.METAL_MESH, MItems.METAL_MESH, MItems.METAL_MESH)
|
||||
.row(MItems.METAL_MESH, MItems.METAL_MESH, MItems.METAL_MESH)
|
||||
.unlockedBy(Items.IRON_BARS)
|
||||
.unlockedBy(Tags.Items.NUGGETS_IRON)
|
||||
.unlockedBy(MItems.METAL_MESH)
|
||||
.build(consumer, modLocation("decorative/metal_railing"))
|
||||
// лампа
|
||||
MatteryRecipe(MItems.LABORATORY_LAMP)
|
||||
.row(MItemTags.IRON_PLATES, MItemTags.HARDENED_GLASS_PANES_COLORLESS, MItemTags.IRON_PLATES)
|
||||
.row(MItems.MIRROR, Items.GLOWSTONE, MItems.MIRROR)
|
||||
.row(MItemTags.TRITANIUM_PLATES, Tags.Items.DUSTS_REDSTONE, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer, modLocation("decorative/lamp"))
|
||||
|
||||
// Голо табличка
|
||||
MatteryRecipe(MItems.HOLO_SIGN, category = RecipeCategory.DECORATIONS)
|
||||
MatteryRecipe(MItems.HOLO_SIGN)
|
||||
.row(MItemTags.BASIC_CIRCUIT, MItemTags.TRITANIUM_PLATES, MItemTags.HARDENED_GLASS_PANES_COLORLESS)
|
||||
.rowAB(Tags.Items.DUSTS_REDSTONE, Tags.Items.DUSTS_GLOWSTONE)
|
||||
.rowBC(MItemTags.TRITANIUM_PLATES, MItemTags.HARDENED_GLASS_PANES_COLORLESS)
|
||||
.build(consumer, modLocation("decorative/holo_sign"))
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_BARS, category = RecipeCategory.DECORATIONS, count = 16)
|
||||
MatteryRecipe(MItems.TRITANIUM_BARS, count = 16)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer, modLocation("decorative/tritanium_bars"))
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_ANVIL[null]!![0], category = RecipeCategory.DECORATIONS)
|
||||
MatteryRecipe(MItems.TRITANIUM_ANVIL[0])
|
||||
.row(MItemTags.TRITANIUM_INGOTS_STORAGE, MItemTags.TRITANIUM_INGOTS_STORAGE, MItemTags.TRITANIUM_INGOTS_STORAGE)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
for ((color, item) in MRegistry.COMPUTER_TERMINAL.allItems) {
|
||||
val builder = MatteryRecipe(item, category = RecipeCategory.DECORATIONS)
|
||||
|
||||
if (color != null) {
|
||||
builder.rowB(color.tag)
|
||||
}
|
||||
builder.row(MItemTags.TRITANIUM_PLATES, MItems.DISPLAY_SCREEN, MItemTags.HARDENED_GLASS_PANES_COLORLESS)
|
||||
builder.rowB(MItemTags.BASIC_CIRCUIT)
|
||||
|
||||
builder.build(consumer)
|
||||
}
|
||||
|
||||
for ((color, item) in MRegistry.STAR_CHAIR.allItems) {
|
||||
MatteryRecipe(item, category = RecipeCategory.DECORATIONS)
|
||||
.rowB(color?.tag)
|
||||
.row(MItemTags.TRITANIUM_PLATES, ItemTags.WOOL, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.CARBON_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
}
|
||||
}
|
||||
|
@ -1,34 +1,12 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.Items
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
private fun makeNormalRecipe(element: Item, result: Item): MatteryRecipe {
|
||||
return MatteryRecipe(result, 1)
|
||||
.row(MItemTags.COPPER_WIRES, Items.REDSTONE, MItemTags.COPPER_WIRES)
|
||||
.row(MItemTags.CARBON_PLATES, element, MItemTags.CARBON_PLATES)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
.unlockedBy(MItemTags.IRON_PLATES)
|
||||
.unlockedBy(MItems.ELECTRIC_PARTS)
|
||||
.unlockedBy(element)
|
||||
}
|
||||
|
||||
private fun makeAdvancedRecipe(element: Item, result: Item): MatteryRecipe {
|
||||
return MatteryRecipe(result, 1)
|
||||
.row(MItemTags.GOLD_WIRES, MItemTags.DILITHIUM_GEMS, MItemTags.GOLD_WIRES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, element, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItems.ELECTRIC_PARTS, MItemTags.DILITHIUM_GEMS, MItems.ELECTRIC_PARTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItems.ELECTRIC_PARTS)
|
||||
.unlockedBy(element)
|
||||
}
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addMachineUpgradeRecipes(consumer: RecipeOutput) {
|
||||
MatteryRecipe(MItems.MachineUpgrades.Basic.BLANK)
|
||||
MatteryRecipe(MItems.MachineUpgrades.Basic.BLANK, 4)
|
||||
.rowB(Items.REDSTONE)
|
||||
.rowAC(MItemTags.IRON_PLATES, MItemTags.IRON_PLATES)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
@ -36,43 +14,27 @@ fun addMachineUpgradeRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItems.ELECTRIC_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
makeNormalRecipe(MItems.MachineUpgrades.Basic.BLANK, MItems.MachineUpgrades.Normal.BLANK)
|
||||
MatteryRecipe(MItems.MachineUpgrades.Normal.BLANK, 4)
|
||||
.row(MItemTags.COPPER_WIRES, Items.REDSTONE, MItemTags.COPPER_WIRES)
|
||||
.row(MItemTags.IRON_PLATES, Items.REDSTONE, MItemTags.IRON_PLATES)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
.unlockedBy(MItemTags.IRON_PLATES)
|
||||
.unlockedBy(MItems.ELECTRIC_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
makeAdvancedRecipe(MItems.MachineUpgrades.Normal.BLANK, MItems.MachineUpgrades.Advanced.BLANK)
|
||||
MatteryRecipe(MItems.MachineUpgrades.Advanced.BLANK, 4)
|
||||
.row(MItemTags.GOLD_WIRES, Items.REDSTONE, MItemTags.GOLD_WIRES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.COPPER_WIRES, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItems.ELECTRIC_PARTS, Items.REDSTONE, MItems.ELECTRIC_PARTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_PLATES)
|
||||
.unlockedBy(MItems.ELECTRIC_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
makeNormalRecipe(MItems.MachineUpgrades.Basic.SPEED, MItems.MachineUpgrades.Normal.SPEED)
|
||||
.build(consumer, "upgrade")
|
||||
makeNormalRecipe(MItems.MachineUpgrades.Basic.ENERGY_CONSUMPTION, MItems.MachineUpgrades.Normal.ENERGY_CONSUMPTION)
|
||||
.build(consumer, "upgrade")
|
||||
makeNormalRecipe(MItems.MachineUpgrades.Basic.FAILSAFE, MItems.MachineUpgrades.Normal.FAILSAFE)
|
||||
.build(consumer, "upgrade")
|
||||
makeNormalRecipe(MItems.MachineUpgrades.Basic.ENERGY_STORAGE, MItems.MachineUpgrades.Normal.ENERGY_STORAGE)
|
||||
.build(consumer, "upgrade")
|
||||
makeNormalRecipe(MItems.MachineUpgrades.Basic.MATTER_STORAGE, MItems.MachineUpgrades.Normal.MATTER_STORAGE)
|
||||
.build(consumer, "upgrade")
|
||||
makeNormalRecipe(MItems.MachineUpgrades.Basic.PROCESSING_ITEMS, MItems.MachineUpgrades.Normal.PROCESSING_ITEMS)
|
||||
.build(consumer, "upgrade")
|
||||
|
||||
makeAdvancedRecipe(MItems.MachineUpgrades.Normal.SPEED, MItems.MachineUpgrades.Advanced.SPEED)
|
||||
.build(consumer, "upgrade")
|
||||
makeAdvancedRecipe(MItems.MachineUpgrades.Normal.ENERGY_CONSUMPTION, MItems.MachineUpgrades.Advanced.ENERGY_CONSUMPTION)
|
||||
.build(consumer, "upgrade")
|
||||
makeAdvancedRecipe(MItems.MachineUpgrades.Normal.FAILSAFE, MItems.MachineUpgrades.Advanced.FAILSAFE)
|
||||
.build(consumer, "upgrade")
|
||||
makeAdvancedRecipe(MItems.MachineUpgrades.Normal.ENERGY_STORAGE, MItems.MachineUpgrades.Advanced.ENERGY_STORAGE)
|
||||
.build(consumer, "upgrade")
|
||||
makeAdvancedRecipe(MItems.MachineUpgrades.Normal.MATTER_STORAGE, MItems.MachineUpgrades.Advanced.MATTER_STORAGE)
|
||||
.build(consumer, "upgrade")
|
||||
makeAdvancedRecipe(MItems.MachineUpgrades.Normal.PROCESSING_ITEMS, MItems.MachineUpgrades.Advanced.PROCESSING_ITEMS)
|
||||
.build(consumer, "upgrade")
|
||||
|
||||
for (tier in MItems.MachineUpgrades.CRAFTABLE_TIERS) {
|
||||
MatteryRecipe(tier.SPEED, 1)
|
||||
.rowB(Items.REDSTONE)
|
||||
.row(Items.SUGAR, MItemTags.COPPER_WIRES, Items.SUGAR)
|
||||
.row(MItems.MECHANICAL_PARTS, tier.BLANK, MItems.MECHANICAL_PARTS)
|
||||
.rowB(tier.BLANK)
|
||||
.unlockedBy(tier.BLANK)
|
||||
.unlockedBy(MItemTags.COPPER_WIRES)
|
||||
.build(consumer)
|
||||
@ -80,7 +42,7 @@ fun addMachineUpgradeRecipes(consumer: RecipeOutput) {
|
||||
MatteryRecipe(tier.ENERGY_CONSUMPTION, 1)
|
||||
.rowB(Items.REDSTONE)
|
||||
.row(MItemTags.COPPER_WIRES, MItemTags.GOLD_WIRES, MItemTags.COPPER_WIRES)
|
||||
.row(MItems.ELECTRIC_PARTS, tier.BLANK, MItems.ELECTRIC_PARTS)
|
||||
.rowB(tier.BLANK)
|
||||
.unlockedBy(tier.BLANK)
|
||||
.unlockedBy(MItemTags.GOLD_WIRES)
|
||||
.build(consumer)
|
||||
@ -88,7 +50,7 @@ fun addMachineUpgradeRecipes(consumer: RecipeOutput) {
|
||||
MatteryRecipe(tier.FAILSAFE, 1)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
.row(MItemTags.COPPER_WIRES, MItems.QUANTUM_TRANSCEIVER, MItemTags.COPPER_WIRES)
|
||||
.row(Tags.Items.DUSTS_GLOWSTONE, tier.BLANK, Tags.Items.DUSTS_GLOWSTONE)
|
||||
.rowB(tier.BLANK)
|
||||
.unlockedBy(tier.BLANK)
|
||||
.unlockedBy(MItems.QUANTUM_TRANSCEIVER)
|
||||
.build(consumer)
|
||||
@ -96,23 +58,23 @@ fun addMachineUpgradeRecipes(consumer: RecipeOutput) {
|
||||
MatteryRecipe(tier.ENERGY_STORAGE, 1)
|
||||
.rowB(Items.REDSTONE)
|
||||
.row(Items.REDSTONE, MItems.ENERGY_BUS, Items.REDSTONE)
|
||||
.row(MItems.ELECTRIC_PARTS, tier.BLANK, MItems.ELECTRIC_PARTS)
|
||||
.rowB(tier.BLANK)
|
||||
.unlockedBy(tier.BLANK)
|
||||
.unlockedBy(MItems.ENERGY_BUS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(tier.MATTER_STORAGE, 1)
|
||||
.rowB(MItemTags.HARDENED_GLASS)
|
||||
.row(MItemTags.HARDENED_GLASS, MItems.MATTER_CAPACITOR_PARTS, MItemTags.HARDENED_GLASS)
|
||||
.row(MItems.MATTER_CAPACITOR_PARTS, tier.BLANK, MItems.MATTER_CAPACITOR_PARTS)
|
||||
.rowB(Tags.Items.GLASS)
|
||||
.row(Tags.Items.GLASS, MItems.MATTER_CAPACITOR_PARTS, Tags.Items.GLASS)
|
||||
.rowB(tier.BLANK)
|
||||
.unlockedBy(tier.BLANK)
|
||||
.unlockedBy(MItems.MATTER_CAPACITOR_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(tier.PROCESSING_ITEMS, 1)
|
||||
.rowB(MItems.MECHANICAL_PARTS)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
.row(MItems.ELECTROMAGNET, MItemTags.TRITANIUM_PLATES, MItems.ELECTROMAGNET)
|
||||
.row(Tags.Items.ENDER_PEARLS, tier.BLANK, Tags.Items.ENDER_PEARLS)
|
||||
.rowB(tier.BLANK)
|
||||
.unlockedBy(tier.BLANK)
|
||||
.unlockedBy(MItems.ELECTROMAGNET)
|
||||
.build(consumer)
|
||||
|
@ -1,85 +1,43 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.core.NonNullList
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.minecraft.world.item.crafting.ShapedRecipePattern
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.recipe.IngredientMatrix
|
||||
import ru.dbotthepony.mc.otm.recipe.MatterEntanglerRecipe
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import java.util.*
|
||||
|
||||
private fun pattern(
|
||||
c00: Ingredient, c10: Ingredient, c20: Ingredient,
|
||||
c01: Ingredient, c11: Ingredient, c21: Ingredient,
|
||||
c02: Ingredient, c12: Ingredient, c22: Ingredient,
|
||||
): ShapedRecipePattern {
|
||||
val patternMap = linkedMapOf(
|
||||
'A' to c00, 'B' to c10, 'C' to c20,
|
||||
'D' to c01, 'E' to c11, 'F' to c21,
|
||||
'G' to c02, 'K' to c12, 'M' to c22,
|
||||
)
|
||||
|
||||
val pattern = listOf(
|
||||
"ABC",
|
||||
"DEF",
|
||||
"GKM",
|
||||
)
|
||||
|
||||
return ShapedRecipePattern(
|
||||
3, 3,
|
||||
NonNullList.copyOf(patternMap.values),
|
||||
Optional.of(ShapedRecipePattern.Data(patternMap, pattern))
|
||||
)
|
||||
}
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addMatterEntanglerRecipes(consumer: RecipeOutput) {
|
||||
consumer.accept(
|
||||
modLocation("quantum_capacitor"),
|
||||
MatterEntanglerRecipe(
|
||||
pattern(
|
||||
Ingredient.of(MItems.ELECTRIC_PARTS), Ingredient.of(MItemTags.GOLD_WIRES), Ingredient.of(MItems.ELECTRIC_PARTS),
|
||||
Ingredient.of(MItems.BATTERY_CAPACITOR), Ingredient.of(MItems.QUANTUM_TRANSCEIVER), Ingredient.of(MItems.BATTERY_CAPACITOR),
|
||||
Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES),
|
||||
modLocation("quantum_capacitor"),
|
||||
IngredientMatrix.of(
|
||||
listOf(Ingredient.of(MItems.ELECTRIC_PARTS), Ingredient.of(MItemTags.GOLD_WIRES), Ingredient.of(MItems.ELECTRIC_PARTS)),
|
||||
listOf(Ingredient.of(MItems.BATTERY_CAPACITOR), Ingredient.of(MItems.QUANTUM_TRANSCEIVER), Ingredient.of(MItems.BATTERY_CAPACITOR)),
|
||||
listOf(Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES)),
|
||||
),
|
||||
Decimal(40),
|
||||
400.0,
|
||||
ItemStack(MItems.QUANTUM_CAPACITOR, 2),
|
||||
experience = 15f
|
||||
).energetic()
|
||||
).energetic().toFinished()
|
||||
)
|
||||
|
||||
consumer.accept(
|
||||
modLocation("quantum_battery"),
|
||||
MatterEntanglerRecipe(
|
||||
pattern(
|
||||
Ingredient.of(Tags.Items.STORAGE_BLOCKS_REDSTONE), Ingredient.of(MItemTags.GOLD_WIRES), Ingredient.of(Tags.Items.STORAGE_BLOCKS_REDSTONE),
|
||||
Ingredient.of(MItems.BATTERY_DENSE), Ingredient.of(MItems.QUANTUM_TRANSCEIVER), Ingredient.of(MItems.BATTERY_DENSE),
|
||||
Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES),
|
||||
modLocation("quantum_battery"),
|
||||
IngredientMatrix.of(
|
||||
listOf(Ingredient.of(Tags.Items.STORAGE_BLOCKS_REDSTONE), Ingredient.of(MItemTags.GOLD_WIRES), Ingredient.of(Tags.Items.STORAGE_BLOCKS_REDSTONE)),
|
||||
listOf(Ingredient.of(MItems.BATTERY_DENSE), Ingredient.of(MItems.QUANTUM_TRANSCEIVER), Ingredient.of(MItems.BATTERY_DENSE)),
|
||||
listOf(Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES), Ingredient.of(MItemTags.TRITANIUM_PLATES)),
|
||||
),
|
||||
Decimal(120),
|
||||
600.0,
|
||||
ItemStack(MItems.QUANTUM_BATTERY, 2),
|
||||
experience = 20f
|
||||
).energetic()
|
||||
)
|
||||
|
||||
consumer.accept(
|
||||
modLocation("antimatter_transform_matrix"),
|
||||
MatterEntanglerRecipe(
|
||||
ingredients = pattern(
|
||||
Ingredient.of(Tags.Items.ENDER_PEARLS), Ingredient.of(MItemTags.DILITHIUM_GEMS), Ingredient.of(Tags.Items.ENDER_PEARLS),
|
||||
Ingredient.of(Tags.Items.DUSTS_REDSTONE), Ingredient.of(MItems.MATTER_TRANSFORM_MATRIX), Ingredient.of(Tags.Items.DUSTS_REDSTONE),
|
||||
Ingredient.of(Tags.Items.DUSTS_GLOWSTONE), Ingredient.of(MItemTags.DILITHIUM_GEMS), Ingredient.of(Tags.Items.DUSTS_GLOWSTONE),
|
||||
),
|
||||
matter = Decimal(600),
|
||||
ticks = 2000.0,
|
||||
result = ItemStack(MItems.ANTIMATTER_TRANSFORM_MATRIX, 1),
|
||||
experience = 20f
|
||||
).energetic()
|
||||
).energetic().toFinished()
|
||||
)
|
||||
}
|
||||
|
@ -1,25 +1,26 @@
|
||||
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import com.google.gson.JsonObject
|
||||
import net.minecraft.advancements.Advancement
|
||||
import net.minecraft.advancements.AdvancementHolder
|
||||
import net.minecraft.advancements.Criterion
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.advancements.CriterionTriggerInstance
|
||||
import net.minecraft.data.recipes.FinishedRecipe
|
||||
import net.minecraft.data.recipes.ShapedRecipeBuilder
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.tags.TagKey
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.minecraft.world.item.crafting.Recipe
|
||||
import net.minecraft.world.item.crafting.RecipeSerializer
|
||||
import net.minecraft.world.item.crafting.ShapedRecipe
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.neoforged.neoforge.common.conditions.ICondition
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.core.set
|
||||
import ru.dbotthepony.mc.otm.core.toJsonStrict
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.recipe.EnergyContainerRecipe
|
||||
import ru.dbotthepony.mc.otm.recipe.UpgradeRecipe
|
||||
import java.util.function.Consumer
|
||||
|
||||
private interface RecipeCell {
|
||||
val value: Ingredient
|
||||
@ -54,19 +55,27 @@ private data class RecipeRow(
|
||||
val c: RecipeCell?,
|
||||
)
|
||||
|
||||
private fun RecipeOutput.map(mapper: (FinishedRecipe) -> FinishedRecipe): RecipeOutput {
|
||||
return object : RecipeOutput {
|
||||
override fun accept(recipe: FinishedRecipe) {
|
||||
this@map.accept(mapper(recipe))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* [ShapedRecipeBuilder] that doesn't suck
|
||||
*/
|
||||
@Suppress("unused")
|
||||
class MatteryRecipe(val result: ItemLike, val count: Int = 1, val category: RecipeCategory = RecipeCategory.MISC) {
|
||||
class MatteryRecipe(val result: ItemLike, val count: Int = 1) {
|
||||
private val rows = arrayOfNulls<RecipeRow>(3)
|
||||
private var index = 0
|
||||
|
||||
private val unlockedBy = ArrayList<Pair<String, Criterion<*>>>().also {
|
||||
private val unlockedBy = ArrayList<Pair<String, CriterionTriggerInstance>>().also {
|
||||
it.add("has_result" to has(result))
|
||||
}
|
||||
|
||||
fun unlockedBy(name: String, trigger: Criterion<*>): MatteryRecipe {
|
||||
fun unlockedBy(name: String, trigger: CriterionTriggerInstance): MatteryRecipe {
|
||||
unlockedBy.add(name to trigger)
|
||||
return this
|
||||
}
|
||||
@ -128,7 +137,7 @@ class MatteryRecipe(val result: ItemLike, val count: Int = 1, val category: Reci
|
||||
throw NoSuchElementException("No recipe rows were defined")
|
||||
}
|
||||
|
||||
val builder = ShapedRecipeBuilder(category, result, count)
|
||||
val builder = ShapedRecipeBuilder(result, count)
|
||||
|
||||
val pairs = ArrayList<Pair<Char, RecipeCell>>()
|
||||
val iterator = charlist.iterator()
|
||||
@ -168,12 +177,22 @@ class MatteryRecipe(val result: ItemLike, val count: Int = 1, val category: Reci
|
||||
return this
|
||||
}
|
||||
|
||||
private fun filter(): (ShapedRecipe) -> ShapedRecipe {
|
||||
private fun filter(): (FinishedRecipe) -> FinishedRecipe {
|
||||
if (upgradeSource != null) {
|
||||
check(copyPaths.isNotEmpty()) { "Defined upgrade recipe without nbt migration operations" }
|
||||
|
||||
return {
|
||||
UpgradeRecipe(it, copyPaths.map { upgradeSource!! to it })
|
||||
object : FinishedRecipe by it {
|
||||
override fun serializeRecipeData(pJson: JsonObject) {
|
||||
pJson["parent"] = it.serializeRecipe()
|
||||
pJson["copyPaths"] = UpgradeRecipe.COPY_PATHS_CODEC.toJsonStrict(copyPaths)
|
||||
pJson["source"] = upgradeSource!!.toString()
|
||||
}
|
||||
|
||||
override fun getType(): RecipeSerializer<*> {
|
||||
return UpgradeRecipe.CODEC
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -199,6 +218,16 @@ class MatteryRecipe(val result: ItemLike, val count: Int = 1, val category: Reci
|
||||
buildRegular().save(consumer.map(filter()), name)
|
||||
}
|
||||
|
||||
fun buildEnergetic(consumer: RecipeOutput, name: String? = null) {
|
||||
build(consumer.map {
|
||||
object : FinishedRecipe by it {
|
||||
override fun getType(): RecipeSerializer<*> {
|
||||
return EnergyContainerRecipe.Companion
|
||||
}
|
||||
}
|
||||
}, name)
|
||||
}
|
||||
|
||||
fun row(): MatteryRecipe {
|
||||
if (index == 3) {
|
||||
throw IllegalStateException("Already have all rows defined")
|
||||
|
@ -1,15 +1,12 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import com.google.common.collect.ImmutableList
|
||||
import net.minecraft.advancements.Advancement
|
||||
import net.minecraft.advancements.AdvancementHolder
|
||||
import net.minecraft.advancements.CriteriaTriggers
|
||||
import net.minecraft.advancements.Criterion
|
||||
import net.minecraft.advancements.CriterionTriggerInstance
|
||||
import net.minecraft.advancements.critereon.EntityPredicate
|
||||
import net.minecraft.advancements.critereon.InventoryChangeTrigger
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.advancements.critereon.MinMaxBounds
|
||||
import net.minecraft.data.DataGenerator
|
||||
import net.minecraft.data.recipes.RecipeBuilder
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.data.recipes.RecipeProvider
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.tags.ItemTags
|
||||
@ -19,13 +16,8 @@ import net.minecraft.util.valueproviders.FloatProvider
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.minecraft.world.item.crafting.Recipe
|
||||
import net.minecraft.world.item.crafting.ShapedRecipePattern
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.neoforged.neoforge.common.conditions.ICondition
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.recipe.MicrowaveRecipe
|
||||
import ru.dbotthepony.mc.otm.recipe.PlatePressRecipe
|
||||
@ -34,24 +26,26 @@ import java.util.stream.Stream
|
||||
|
||||
private typealias RecipeBuilderCallback = (MatteryRecipeProvider, consumer: RecipeOutput) -> Unit
|
||||
|
||||
fun has(p_176521_: MinMaxBounds.Ints, p_176522_: ItemLike): Criterion<InventoryChangeTrigger.TriggerInstance> {
|
||||
fun has(p_176521_: MinMaxBounds.Ints, p_176522_: ItemLike): CriterionTriggerInstance {
|
||||
return inventoryTrigger(ItemPredicate.Builder.item().of(p_176522_).withCount(p_176521_).build())
|
||||
}
|
||||
|
||||
fun has(p_125978_: ItemLike): Criterion<InventoryChangeTrigger.TriggerInstance> {
|
||||
fun has(p_125978_: ItemLike): CriterionTriggerInstance {
|
||||
return inventoryTrigger(ItemPredicate.Builder.item().of(p_125978_).build())
|
||||
}
|
||||
|
||||
fun has(p_125976_: TagKey<Item>): Criterion<InventoryChangeTrigger.TriggerInstance> {
|
||||
fun has(p_125976_: TagKey<Item>): CriterionTriggerInstance {
|
||||
return inventoryTrigger(ItemPredicate.Builder.item().of(p_125976_).build())
|
||||
}
|
||||
|
||||
fun inventoryTrigger(vararg p_126012_: ItemPredicate): Criterion<InventoryChangeTrigger.TriggerInstance> {
|
||||
return CriteriaTriggers.INVENTORY_CHANGED.createCriterion(InventoryChangeTrigger.TriggerInstance(
|
||||
Optional.empty(),
|
||||
InventoryChangeTrigger.TriggerInstance.Slots.ANY,
|
||||
ImmutableList.copyOf(p_126012_)
|
||||
))
|
||||
fun inventoryTrigger(vararg p_126012_: ItemPredicate): CriterionTriggerInstance {
|
||||
return InventoryChangeTrigger.TriggerInstance(
|
||||
EntityPredicate.Composite.ANY,
|
||||
MinMaxBounds.Ints.ANY,
|
||||
MinMaxBounds.Ints.ANY,
|
||||
MinMaxBounds.Ints.ANY,
|
||||
p_126012_
|
||||
)
|
||||
}
|
||||
|
||||
fun multiIngredient(vararg items: Any) : Ingredient {
|
||||
@ -87,28 +81,7 @@ fun <T : RecipeBuilder> T.unlockedBy(item: TagKey<Item>): T {
|
||||
return this
|
||||
}
|
||||
|
||||
fun <IN : Recipe<*>> RecipeOutput.map(mapper: (IN) -> Recipe<*>): RecipeOutput {
|
||||
return object : RecipeOutput {
|
||||
override fun advancement(): Advancement.Builder {
|
||||
return this@map.advancement()
|
||||
}
|
||||
|
||||
override fun accept(
|
||||
id: ResourceLocation,
|
||||
recipe: Recipe<*>,
|
||||
advancement: AdvancementHolder?,
|
||||
vararg conditions: ICondition?
|
||||
) {
|
||||
this@map.accept(id, mapper(recipe as IN), advancement, *conditions)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun RecipeOutput.accept(id: ResourceLocation, recipe: Recipe<*>) {
|
||||
accept(id, recipe, null)
|
||||
}
|
||||
|
||||
class MatteryRecipeProvider(generatorIn: GatherDataEvent) : RecipeProvider(generatorIn.generator.packOutput, generatorIn.lookupProvider) {
|
||||
class MatteryRecipeProvider(generatorIn: DataGenerator) : RecipeProvider(generatorIn) {
|
||||
private val callbacks = LinkedList<RecipeBuilderCallback>()
|
||||
|
||||
fun exec(callback: RecipeBuilderCallback): MatteryRecipeProvider {
|
||||
@ -116,7 +89,7 @@ class MatteryRecipeProvider(generatorIn: GatherDataEvent) : RecipeProvider(gener
|
||||
return this
|
||||
}
|
||||
|
||||
override fun buildRecipes(callback: RecipeOutput) {
|
||||
override fun buildCraftingRecipes(callback: RecipeOutput) {
|
||||
for (lambda in callbacks) {
|
||||
lambda(this, callback)
|
||||
}
|
||||
@ -124,25 +97,26 @@ class MatteryRecipeProvider(generatorIn: GatherDataEvent) : RecipeProvider(gener
|
||||
|
||||
fun plate(id: String, count: Int = 1, workTicks: Int = 200, experience: FloatProvider = ConstantFloat.ZERO) {
|
||||
exec { _, consumer ->
|
||||
consumer.accept(modLocation("plates/$id"), PlatePressRecipe(
|
||||
Ingredient.of(ItemTags.create(ResourceLocation("c", "ingots/$id"))),
|
||||
Ingredient.of(ItemTags.create(ResourceLocation("c", "plates/$id"))),
|
||||
consumer.accept(PlatePressRecipe(
|
||||
modLocation("plates/$id"),
|
||||
Ingredient.of(ItemTags.create(ResourceLocation("forge", "ingots/$id"))),
|
||||
Ingredient.of(ItemTags.create(ResourceLocation("forge", "plates/$id"))),
|
||||
count,
|
||||
workTicks,
|
||||
experience = experience
|
||||
))
|
||||
).toFinished())
|
||||
}
|
||||
}
|
||||
|
||||
fun plate(id: String, ingredient: Ingredient, result: Ingredient, count: Int = 1, workTicks: Int = 200, experience: FloatProvider = ConstantFloat.ZERO) {
|
||||
exec { it, callback ->
|
||||
callback.accept(modLocation("plate_$id"), PlatePressRecipe(ingredient, result, count, workTicks, experience = experience))
|
||||
callback.accept(PlatePressRecipe(modLocation("plates/$id"), ingredient, result, count, workTicks, experience = experience).toFinished())
|
||||
}
|
||||
}
|
||||
|
||||
fun microwave(id: String, ingredient: Ingredient, result: Ingredient, count: Int = 1, workTicks: Int = 200, experience: FloatProvider = ConstantFloat.ZERO) {
|
||||
exec { it, callback ->
|
||||
callback.accept(modLocation("microwave/$id"), MicrowaveRecipe(ingredient, result, count, workTicks, experience = experience))
|
||||
callback.accept(MicrowaveRecipe(modLocation("microwave/$id"), ingredient, result, count, workTicks, experience = experience).toFinished())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,187 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.data.recipes.ShapelessRecipeBuilder
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.recipe.UpgradeRecipe
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addMultiblockRecipes(consumer: RecipeOutput) {
|
||||
val machinesCategory = RecipeCategory.DECORATIONS
|
||||
|
||||
// energy interface
|
||||
MatteryRecipe(MItems.ENERGY_INPUT_INTERFACE, category = machinesCategory)
|
||||
.rowB(MItems.ENERGY_BUS)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.MACHINE_FRAME, MItems.ELECTRIC_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
ShapelessRecipeBuilder.shapeless(machinesCategory, ItemStack(MItems.ENERGY_INPUT_INTERFACE))
|
||||
.requires(MItems.ENERGY_OUTPUT_INTERFACE)
|
||||
.unlockedBy(MItems.ENERGY_OUTPUT_INTERFACE)
|
||||
.unlockedBy(MItems.ENERGY_INPUT_INTERFACE)
|
||||
.save(consumer, modLocation("energy_interface_to_input"))
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_OUTPUT_INTERFACE, category = machinesCategory)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.MACHINE_FRAME, MItems.ELECTRIC_PARTS)
|
||||
.rowB(MItems.ENERGY_BUS)
|
||||
.build(consumer)
|
||||
|
||||
ShapelessRecipeBuilder.shapeless(machinesCategory, ItemStack(MItems.ENERGY_OUTPUT_INTERFACE))
|
||||
.requires(MItems.ENERGY_INPUT_INTERFACE)
|
||||
.unlockedBy(MItems.ENERGY_OUTPUT_INTERFACE)
|
||||
.unlockedBy(MItems.ENERGY_INPUT_INTERFACE)
|
||||
.save(consumer, modLocation("energy_interface_to_output"))
|
||||
|
||||
// energy hatch
|
||||
MatteryRecipe(MItems.ENERGY_INPUT_HATCH, category = machinesCategory)
|
||||
.rowAC(MItemTags.GOLD_WIRES, MItemTags.GOLD_WIRES)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.ENERGY_INPUT_INTERFACE, MItems.ELECTRIC_PARTS)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, MItemTags.DILITHIUM_GEMS, Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_OUTPUT_HATCH, category = machinesCategory)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, MItemTags.DILITHIUM_GEMS, Tags.Items.DUSTS_REDSTONE)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.ENERGY_OUTPUT_INTERFACE, MItems.ELECTRIC_PARTS)
|
||||
.rowAC(MItemTags.GOLD_WIRES, MItemTags.GOLD_WIRES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_INPUT_HATCH, category = machinesCategory)
|
||||
.rowB(MItems.ENERGY_OUTPUT_HATCH)
|
||||
.setUpgradeSource(MItems.ENERGY_OUTPUT_HATCH)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.build(consumer, "from_output")
|
||||
|
||||
MatteryRecipe(MItems.ENERGY_OUTPUT_HATCH, category = machinesCategory)
|
||||
.rowB(MItems.ENERGY_INPUT_HATCH)
|
||||
.setUpgradeSource(MItems.ENERGY_INPUT_HATCH)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.build(consumer, "from_input")
|
||||
|
||||
// item hatch
|
||||
MatteryRecipe(MItems.ITEM_INPUT_HATCH, category = machinesCategory)
|
||||
.rowB(MItemTags.BASIC_CIRCUIT)
|
||||
.row(MItems.MECHANICAL_PARTS, MItemTags.CARGO_CRATES, MItems.MECHANICAL_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ITEM_OUTPUT_HATCH, category = machinesCategory)
|
||||
.row(MItems.MECHANICAL_PARTS, MItemTags.CARGO_CRATES, MItems.MECHANICAL_PARTS)
|
||||
.rowB(MItemTags.BASIC_CIRCUIT)
|
||||
.build(consumer)
|
||||
|
||||
ShapelessRecipeBuilder.shapeless(machinesCategory, ItemStack(MItems.ITEM_INPUT_HATCH))
|
||||
.requires(MItems.ITEM_OUTPUT_HATCH)
|
||||
.unlockedBy(MItems.ITEM_INPUT_HATCH)
|
||||
.unlockedBy(MItems.ITEM_OUTPUT_HATCH)
|
||||
.save(consumer, modLocation("item_hatch_to_input"))
|
||||
|
||||
ShapelessRecipeBuilder.shapeless(machinesCategory, ItemStack(MItems.ITEM_OUTPUT_HATCH))
|
||||
.requires(MItems.ITEM_INPUT_HATCH)
|
||||
.unlockedBy(MItems.ITEM_INPUT_HATCH)
|
||||
.unlockedBy(MItems.ITEM_OUTPUT_HATCH)
|
||||
.save(consumer, modLocation("item_hatch_to_output"))
|
||||
|
||||
// matter hatch
|
||||
MatteryRecipe(MItems.MATTER_INPUT_HATCH, category = machinesCategory)
|
||||
.rowB(MItems.MATTER_IO_PORT)
|
||||
.row(MItems.MECHANICAL_PARTS, MItems.MACHINE_FRAME, MItems.ELECTRIC_PARTS)
|
||||
.rowAC(MItems.MATTER_CAPACITOR_PARTS, MItems.MATTER_CAPACITOR_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_OUTPUT_HATCH, category = machinesCategory)
|
||||
.rowAC(MItems.MATTER_CAPACITOR_PARTS, MItems.MATTER_CAPACITOR_PARTS)
|
||||
.row(MItems.MECHANICAL_PARTS, MItems.MACHINE_FRAME, MItems.ELECTRIC_PARTS)
|
||||
.rowB(MItems.MATTER_IO_PORT)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_INPUT_HATCH, category = machinesCategory)
|
||||
.rowB(MItems.MATTER_OUTPUT_HATCH)
|
||||
.setUpgradeSource(MItems.MATTER_OUTPUT_HATCH)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.build(consumer, "from_output")
|
||||
|
||||
MatteryRecipe(MItems.MATTER_OUTPUT_HATCH, category = machinesCategory)
|
||||
.rowB(MItems.MATTER_INPUT_HATCH)
|
||||
.setUpgradeSource(MItems.MATTER_INPUT_HATCH)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.build(consumer, "from_input")
|
||||
|
||||
// misc
|
||||
MatteryRecipe(MItems.GENERATOR_BLOCK, category = machinesCategory)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.ELECTROMOTOR, MItems.ELECTRIC_PARTS)
|
||||
.row(MItems.ELECTROMOTOR, MItems.MACHINE_FRAME, MItems.ELECTROMOTOR)
|
||||
.row(MItems.ELECTRIC_PARTS, MItems.ELECTROMOTOR, MItems.ELECTRIC_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MODULAR_FRAME, count = 4, category = machinesCategory)
|
||||
.row(MItemTags.IRON_PLATES, Tags.Items.INGOTS_IRON, MItemTags.IRON_PLATES)
|
||||
.rowAC(Tags.Items.INGOTS_IRON, Tags.Items.INGOTS_IRON)
|
||||
.row(MItemTags.IRON_PLATES, Tags.Items.INGOTS_IRON, MItemTags.IRON_PLATES)
|
||||
.unlockedBy(MItemTags.IRON_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.HEAVY_MODULAR_FRAME, count = 2, category = machinesCategory)
|
||||
.row(MItems.WITHERED_STEEL, MItems.REINFORCED_IRON_PLATE, MItems.WITHERED_STEEL,)
|
||||
.row(MItems.REINFORCED_IRON_PLATE, MItems.MODULAR_FRAME, MItems.REINFORCED_IRON_PLATE)
|
||||
.row(MItems.WITHERED_STEEL, MItems.REINFORCED_IRON_PLATE, MItems.WITHERED_STEEL,)
|
||||
.unlockedBy(MItems.MODULAR_FRAME)
|
||||
.build(consumer)
|
||||
|
||||
// blackhole generator
|
||||
MatteryRecipe(MItems.BLACK_HOLE_GENERATOR, category = machinesCategory)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.BLACK_HOLE_SCANNER, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItems.MACHINE_FRAME, MItemTags.DILITHIUM_GEMS)
|
||||
.row(MItems.MATTER_CAPACITOR_PARTS, Tags.Items.GEMS_DIAMOND, MItems.MATTER_CAPACITOR_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_HULL, count = 2, category = machinesCategory)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.IRON_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.IRON_PLATES, MItems.MODULAR_FRAME, MItemTags.IRON_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.IRON_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_INJECTOR, category = machinesCategory)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.MATTER_TRANSFORM_MATRIX, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItems.MACHINE_FRAME, MItemTags.DILITHIUM_GEMS)
|
||||
.row(MItems.MATTER_IO_PORT, MItems.GRAVITATION_FIELD_SENSOR, MItems.MATTER_IO_PORT)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.ANTIMATTER_INJECTOR, category = machinesCategory)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.ANTIMATTER_TRANSFORM_MATRIX, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItems.MACHINE_FRAME, MItemTags.DILITHIUM_GEMS)
|
||||
.row(MItems.MATTER_IO_PORT, MItems.GRAVITATION_FIELD_SENSOR, MItems.MATTER_IO_PORT)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.HIGH_ENERGY_PARTICLE_COLLECTOR, category = machinesCategory)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.MECHANICAL_PARTS, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(Tags.Items.GEMS_QUARTZ, MItems.MACHINE_FRAME, Tags.Items.GEMS_QUARTZ)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItems.GRAVITATION_FIELD_LIMITER, MItemTags.DILITHIUM_GEMS)
|
||||
.build(consumer)
|
||||
|
||||
// flywheel
|
||||
MatteryRecipe(MItems.FLYWHEEL_SHAFT, category = machinesCategory)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MECHANICAL_PARTS, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MECHANICAL_PARTS, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MECHANICAL_PARTS, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.FLYWHEEL_BEARING, category = machinesCategory)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MECHANICAL_PARTS, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItems.MECHANICAL_PARTS, MItems.MECHANICAL_PARTS, MItems.MECHANICAL_PARTS)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MECHANICAL_PARTS, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.FLYWHEEL_HOUSING, count = 4, category = machinesCategory)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.CARBON_PLATES)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ELECTRIC_PARTS, MItemTags.TRITANIUM_PLATES)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.CARBON_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.FLYWHEEL_BATTERY, category = machinesCategory)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.FLYWHEEL_HOUSING, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItemTags.GOLD_WIRES, MItemTags.COPPER_WIRES, MItemTags.GOLD_WIRES)
|
||||
.build(consumer)
|
||||
}
|
@ -1,51 +1,29 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import mekanism.api.recipes.basic.BasicPaintingRecipe
|
||||
import mekanism.api.recipes.ingredients.creator.IngredientCreatorAccess
|
||||
import mekanism.api.text.EnumColor
|
||||
import mekanism.common.registries.MekanismChemicals
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.neoforged.fml.ModList
|
||||
import net.neoforged.neoforge.common.conditions.ModLoadedCondition
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.recipe.PainterArmorDyeRecipe
|
||||
import ru.dbotthepony.mc.otm.recipe.PainterRecipe
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
|
||||
private val Item.recipeName get() = registryName!!.namespace + "/" + registryName!!.path
|
||||
|
||||
private val isMekanismLoaded by lazy {
|
||||
ModList.get().isLoaded("mekanism")
|
||||
}
|
||||
|
||||
private fun generate(consumer: RecipeOutput, items: Map<out DyeColor?, Item>, amount: Int = 1) {
|
||||
for ((targetColor, targetItem) in items) {
|
||||
if (targetColor == null) continue
|
||||
|
||||
consumer.accept(modLocation("painter/" + targetItem.recipeName), PainterRecipe(
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/" + targetItem.recipeName),
|
||||
Ingredient.of(items.entries.stream().filter { it.key != null && it.key != targetColor }.map { ItemStack(it.value) }),
|
||||
ItemStack(targetItem),
|
||||
mapOf(targetColor to amount, null to 15)
|
||||
))
|
||||
|
||||
if (isMekanismLoaded) {
|
||||
addMekanismPaintRecipe(consumer,
|
||||
modLocation("mekanism/painter/" + targetItem.recipeName),
|
||||
Ingredient.of(items.entries.stream().filter { it.key != null && it.key != targetColor }.map { ItemStack(it.value) }),
|
||||
ItemStack(targetItem),
|
||||
targetColor,
|
||||
amount
|
||||
)
|
||||
}
|
||||
mapOf(targetColor to amount)
|
||||
).toFinished())
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,71 +36,37 @@ private fun generate(consumer: RecipeOutput, default: Item, items: Map<out DyeCo
|
||||
for ((k1, v1) in items) {
|
||||
if (k1 == null) continue
|
||||
|
||||
consumer.accept(modLocation("painter/" + default.recipeName + "/" + v1.recipeName), PainterRecipe(
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/" + default.recipeName + "/" + v1.recipeName),
|
||||
Ingredient.of(default),
|
||||
ItemStack(v1),
|
||||
mapOf(k1 to amount)
|
||||
))
|
||||
|
||||
if (isMekanismLoaded) {
|
||||
addMekanismPaintRecipe(consumer,
|
||||
modLocation("mekanism/painter/" + default.recipeName + "/" + v1.recipeName),
|
||||
Ingredient.of(default),
|
||||
ItemStack(v1),
|
||||
k1,
|
||||
amount
|
||||
)
|
||||
}
|
||||
).toFinished())
|
||||
}
|
||||
}
|
||||
|
||||
private fun cleaning(consumer: RecipeOutput, to: Item, from: Map<out DyeColor?, Item>, suffix: String = "") {
|
||||
cleaning(consumer, to, from.entries.stream().filter { it.key != null }.map { it.value }.toList(), suffix)
|
||||
}
|
||||
|
||||
private fun cleaning(consumer: RecipeOutput, to: Item, from: Collection<Item>, suffix: String = "") {
|
||||
consumer.accept(modLocation("painter/cleaning/" + to.recipeName + suffix), PainterRecipe(
|
||||
Ingredient.of(from.stream().map { ItemStack(it) }),
|
||||
private fun cleaning(consumer: RecipeOutput, to: Item, from: Map<out DyeColor?, Item>) {
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/cleaning/" + to.recipeName),
|
||||
Ingredient.of(from.entries.stream().filter { it.key != null }.map { ItemStack(it.value) }),
|
||||
ItemStack(to),
|
||||
mapOf(null to 15)
|
||||
))
|
||||
).toFinished())
|
||||
}
|
||||
|
||||
private fun striped(consumer: RecipeOutput, name: String, items: List<Pair<Item, Pair<DyeColor, DyeColor>>>, base: Map<DyeColor, Item>) {
|
||||
for ((stripeItem, colors) in items) {
|
||||
val (baseColor, stripe) = colors
|
||||
|
||||
consumer.accept(modLocation("painter/stripes_$name/${baseColor.getName()}/${stripe.getName()}"), PainterRecipe(
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/stripes_$name/${baseColor.getName()}/${stripe.getName()}"),
|
||||
Ingredient.of(base[baseColor]),
|
||||
ItemStack(stripeItem),
|
||||
setOf(stripe)
|
||||
))
|
||||
|
||||
if (isMekanismLoaded) {
|
||||
addMekanismPaintRecipe(consumer,
|
||||
modLocation("mekanism/painter/stripes_$name/${baseColor.getName()}/${stripe.getName()}"),
|
||||
Ingredient.of(base[baseColor]),
|
||||
ItemStack(stripeItem),
|
||||
stripe
|
||||
)
|
||||
}
|
||||
).toFinished())
|
||||
}
|
||||
}
|
||||
|
||||
private fun addMekanismPaintRecipe(consumer: RecipeOutput, location: ResourceLocation, input: Ingredient, output: ItemStack, dye: DyeColor, amount: Int = 1, dyeMul: Float = 0.125F) {
|
||||
if (output.item.registryName?.namespace == "minecraft") return // mekanism already has painting recipes for vanilla
|
||||
|
||||
val color = EnumColor.entries.find{it.dyeColor == dye} ?: return
|
||||
val pigment = MekanismChemicals.PIGMENT_COLOR_LOOKUP.get(color) ?: return
|
||||
|
||||
consumer.accept(location, BasicPaintingRecipe(
|
||||
IngredientCreatorAccess.item().from(input),
|
||||
IngredientCreatorAccess.chemicalStack().from(pigment, (256L * amount * dyeMul).toLong()),
|
||||
output.copy(),
|
||||
false
|
||||
), null, ModLoadedCondition("mekanism"))
|
||||
}
|
||||
|
||||
fun addPainterRecipes(consumer: RecipeOutput) {
|
||||
generate(consumer, mapOf(
|
||||
DyeColor.WHITE to Items.WHITE_WOOL,
|
||||
@ -357,12 +301,7 @@ fun addPainterRecipes(consumer: RecipeOutput) {
|
||||
generate(consumer, list[null]!!,list)
|
||||
}
|
||||
|
||||
for (i in 0 until MBlocks.TRITANIUM_ANVIL_VARIANTS) {
|
||||
generate(consumer, MItems.TRITANIUM_ANVIL[null]!![i], DyeColor.entries.associateWith { MItems.TRITANIUM_ANVIL[it]!![i] })
|
||||
}
|
||||
|
||||
generate(consumer, MRegistry.COMPUTER_TERMINAL.item, MRegistry.COMPUTER_TERMINAL.items)
|
||||
generate(consumer, MRegistry.STAR_CHAIR.item, MRegistry.STAR_CHAIR.items)
|
||||
|
||||
generate(consumer, MRegistry.VENT.item, MRegistry.VENT.items)
|
||||
generate(consumer, MRegistry.VENT_ALTERNATIVE.item, MRegistry.VENT_ALTERNATIVE.items)
|
||||
@ -378,47 +317,37 @@ fun addPainterRecipes(consumer: RecipeOutput) {
|
||||
striped(consumer, "walls", MRegistry.TRITANIUM_STRIPED_WALL.itemsWithColor, MRegistry.TRITANIUM_WALL.items)
|
||||
striped(consumer, "slabs", MRegistry.TRITANIUM_STRIPED_SLAB.itemsWithColor, MRegistry.TRITANIUM_SLAB.items)
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
consumer.accept(modLocation("painter/armor_dye_" + color.getName().lowercase()), PainterArmorDyeRecipe(mapOf(color to 1)))
|
||||
for (color in DyeColor.values()) {
|
||||
consumer.accept(PainterArmorDyeRecipe(modLocation("painter/armor_dye_" + color.getName().lowercase()), mapOf(color to 1)).toFinished())
|
||||
}
|
||||
|
||||
consumer.accept(modLocation("painter/armor_clear_dye"), PainterArmorDyeRecipe(mapOf(null to 15)))
|
||||
consumer.accept(PainterArmorDyeRecipe(modLocation("painter/armor_clear_dye"), mapOf(null to 15)).toFinished())
|
||||
|
||||
generate(consumer, MItems.TRITANIUM_STRIPED_BLOCK)
|
||||
generate(consumer, MItems.TRITANIUM_STRIPED_STAIRS)
|
||||
generate(consumer, MItems.TRITANIUM_STRIPED_SLAB)
|
||||
generate(consumer, MItems.TRITANIUM_STRIPED_WALL)
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/tritanium_yellow_stripe"),
|
||||
Ingredient.of(MRegistry.TRITANIUM_BLOCK.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_BLOCK),
|
||||
mapOf(DyeColor.YELLOW to 1)
|
||||
).toFinished())
|
||||
|
||||
cleaning(consumer, MRegistry.TRITANIUM_BLOCK.item, MItems.TRITANIUM_STRIPED_BLOCK.values, "_from_striped")
|
||||
cleaning(consumer, MRegistry.TRITANIUM_STAIRS.item, MItems.TRITANIUM_STRIPED_STAIRS.values, "_from_striped")
|
||||
cleaning(consumer, MRegistry.TRITANIUM_SLAB.item, MItems.TRITANIUM_STRIPED_SLAB.values, "_from_striped")
|
||||
cleaning(consumer, MRegistry.TRITANIUM_WALL.item, MItems.TRITANIUM_STRIPED_WALL.values, "_from_striped")
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/tritanium_yellow_stripe_stairs"),
|
||||
Ingredient.of(MRegistry.TRITANIUM_STAIRS.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_STAIRS),
|
||||
mapOf(DyeColor.YELLOW to 1)
|
||||
).toFinished())
|
||||
|
||||
for (color in DyeColor.entries) {
|
||||
consumer.accept(modLocation("painter/tritanium_${color.name.lowercase()}_stripe"), PainterRecipe(
|
||||
Ingredient.of(MRegistry.TRITANIUM_BLOCK.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_BLOCK[color]!!),
|
||||
mapOf(color to 1)
|
||||
))
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/tritanium_yellow_stripe_slab"),
|
||||
Ingredient.of(MRegistry.TRITANIUM_SLAB.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_SLAB),
|
||||
mapOf(DyeColor.YELLOW to 1)
|
||||
).toFinished())
|
||||
|
||||
consumer.accept(modLocation("painter/tritanium_${color.name.lowercase()}_stripe_stairs"), PainterRecipe(
|
||||
Ingredient.of(MRegistry.TRITANIUM_STAIRS.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_STAIRS[color]!!),
|
||||
mapOf(color to 1)
|
||||
))
|
||||
|
||||
consumer.accept(modLocation("painter/tritanium_${color.name.lowercase()}_stripe_slab"), PainterRecipe(
|
||||
Ingredient.of(MRegistry.TRITANIUM_SLAB.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_SLAB[color]!!),
|
||||
mapOf(color to 1)
|
||||
))
|
||||
|
||||
consumer.accept(modLocation("painter/tritanium_${color.name.lowercase()}_stripe_wall"), PainterRecipe(
|
||||
Ingredient.of(MRegistry.TRITANIUM_WALL.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_WALL[color]!!),
|
||||
mapOf(color to 1)
|
||||
))
|
||||
}
|
||||
|
||||
generate(consumer, MItems.GRILL[null]!!, MItems.GRILL)
|
||||
consumer.accept(PainterRecipe(
|
||||
modLocation("painter/tritanium_yellow_stripe_wall"),
|
||||
Ingredient.of(MRegistry.TRITANIUM_WALL.item),
|
||||
ItemStack(MItems.TRITANIUM_STRIPED_WALL),
|
||||
mapOf(DyeColor.YELLOW to 1)
|
||||
).toFinished())
|
||||
}
|
||||
|
@ -3,12 +3,12 @@ package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
import net.minecraft.util.valueproviders.ConstantFloat
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addPlatePressRecipes(provider: MatteryRecipeProvider) {
|
||||
val baselineMetals = arrayOf("iron" to 0.2f, "silver" to 0.3f, "bronze" to 0.3f, "lead" to 0.3f, "constantan" to 0.4f, "brass" to 0.3f, "nickel" to 0.5f)
|
||||
val baselineMetals = arrayOf("iron" to 0.2f, "silver" to 0.3f, "bronze" to 0.3f, "lead" to 0.3f, "constantan" to 0.4f, "brass" to 0.3f)
|
||||
val softMetals = arrayOf("gold" to 0.4f, "aluminum" to 0.3f, "aluminium" to 0.3f, "copper" to 0.2f, "electrum" to 0.4f, "zinc" to 0.3f)
|
||||
val hardMetals = arrayOf("tritanium" to 0.5f, "steel" to 0.5f, "tungsten" to 0.55f, "uranium" to 0.5f)
|
||||
|
||||
@ -25,5 +25,5 @@ fun addPlatePressRecipes(provider: MatteryRecipeProvider) {
|
||||
}
|
||||
|
||||
provider.plate("carbon", result = Ingredient.of(MItemTags.CARBON_PLATES), ingredient = Ingredient.of(Items.COAL), workTicks = 140, experience = ConstantFloat.of(0.3f))
|
||||
provider.plate("circuit_plating", result = Ingredient.of(MItems.CIRCUIT_PLATING), ingredient = Ingredient.of(Tags.Items.SANDS), workTicks = 120, experience = ConstantFloat.of(0.2f))
|
||||
provider.plate("circuit_plating", result = Ingredient.of(MItems.CIRCUIT_PLATING), ingredient = Ingredient.of(Tags.Items.SAND), workTicks = 120, experience = ConstantFloat.of(0.2f))
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.data.recipes.FinishedRecipe
|
||||
import net.minecraft.data.recipes.ShapelessRecipeBuilder
|
||||
import net.minecraft.tags.TagKey
|
||||
import net.minecraft.world.item.DyeColor
|
||||
@ -10,15 +9,18 @@ import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import java.util.function.Consumer
|
||||
|
||||
typealias RecipeOutput = Consumer<FinishedRecipe>
|
||||
|
||||
fun hammerRecipe(output: ItemLike, input: ItemLike, consumer: RecipeOutput) {
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, output, 1)
|
||||
ShapelessRecipeBuilder(output, 1)
|
||||
.requires(MItemTags.TOOLS_HAMMERS)
|
||||
.requires(input)
|
||||
.unlockedBy(MItemTags.TOOLS_HAMMERS)
|
||||
@ -27,7 +29,7 @@ fun hammerRecipe(output: ItemLike, input: ItemLike, consumer: RecipeOutput) {
|
||||
}
|
||||
|
||||
fun hammerRecipe(output: ItemLike, input: TagKey<Item>, consumer: RecipeOutput) {
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, output, 1)
|
||||
ShapelessRecipeBuilder(output, 1)
|
||||
.requires(MItemTags.TOOLS_HAMMERS)
|
||||
.requires(input)
|
||||
.unlockedBy(MItemTags.TOOLS_HAMMERS)
|
||||
@ -36,81 +38,29 @@ fun hammerRecipe(output: ItemLike, input: TagKey<Item>, consumer: RecipeOutput)
|
||||
}
|
||||
|
||||
fun addShapelessRecipes(consumer: RecipeOutput) {
|
||||
for (color in DyeColor.entries) {
|
||||
ShapelessRecipeBuilder(RecipeCategory.TRANSPORTATION, MItems.CARGO_CRATE_MINECARTS[color]!!, 1)
|
||||
for (color in DyeColor.values()) {
|
||||
ShapelessRecipeBuilder(MItems.CARGO_CRATE_MINECARTS[color]!!, 1)
|
||||
.requires(Items.MINECART)
|
||||
.requires(MRegistry.CARGO_CRATES.items[color]!!)
|
||||
.unlockedBy(Items.MINECART)
|
||||
.unlockedBy(MRegistry.CARGO_CRATES.items[color]!!)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.TRANSPORTATION, MItems.CARGO_CRATE_MINECARTS[color]!!, 1)
|
||||
ShapelessRecipeBuilder(MItems.CARGO_CRATE_MINECARTS[color]!!, 1)
|
||||
.requires(Ingredient.of(MItems.CARGO_CRATE_MINECARTS.entries.stream().filter { it.key != color }.map { ItemStack(it.value) }))
|
||||
.requires(color.tag)
|
||||
.unlockedBy(MItems.CARGO_CRATE_MINECARTS.entries.stream().filter { it.key != color }.map { it.value })
|
||||
.save(consumer, modLocation(MItems.CARGO_CRATE_MINECARTS[color]!!.registryName!!.path + "_alt"))
|
||||
}
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.TRANSPORTATION, MItems.CARGO_CRATE_MINECARTS[null]!!, 1)
|
||||
ShapelessRecipeBuilder(MItems.CARGO_CRATE_MINECARTS[null]!!, 1)
|
||||
.requires(Items.MINECART)
|
||||
.requires(MRegistry.CARGO_CRATES.item)
|
||||
.unlockedBy(Items.MINECART)
|
||||
.unlockedBy(MRegistry.CARGO_CRATES.item)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MItems.TRITANIUM_INGOT_BLOCK, 1)
|
||||
.requires(Ingredient.of(MItemTags.TRITANIUM_INGOTS), 9)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MItems.TRITANIUM_RAW_BLOCK, 1)
|
||||
.requires(Ingredient.of(MItemTags.TRITANIUM_ORE_CLUMPS), 9)
|
||||
.unlockedBy(MItemTags.TRITANIUM_ORE_CLUMPS)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, MItems.TRITANIUM_ORE_CLUMP, 9)
|
||||
.requires(Ingredient.of(MItemTags.RAW_TRITANIUM_STORAGE))
|
||||
.unlockedBy(MItemTags.RAW_TRITANIUM_STORAGE)
|
||||
.save(consumer, modLocation("raw_tritanium_from_storage"))
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 9)
|
||||
.requires(Ingredient.of(MItemTags.TRITANIUM_INGOTS_STORAGE))
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS_STORAGE)
|
||||
.save(consumer, modLocation("tritanium_ingot_from_storage"))
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, MItems.TRITANIUM_NUGGET, 9)
|
||||
.requires(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_NUGGETS)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, MItems.TRITANIUM_INGOT, 1)
|
||||
.requires(Ingredient.of(MItemTags.TRITANIUM_NUGGETS), 9)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.unlockedBy(MItemTags.TRITANIUM_NUGGETS)
|
||||
.save(consumer, modLocation("ingot_from_nuggets"))
|
||||
|
||||
hammerRecipe(MItems.TRITANIUM_PLATE, MItemTags.TRITANIUM_INGOTS, consumer)
|
||||
hammerRecipe(MItems.IRON_PLATE, Tags.Items.INGOTS_IRON, consumer)
|
||||
hammerRecipe(MItems.GOLD_PLATE, Tags.Items.INGOTS_GOLD, consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MItems.WITHERED_STEEL_BLOCK, 1)
|
||||
.requires(Ingredient.of(MItems.WITHERED_STEEL), 9)
|
||||
.unlockedBy(MItems.WITHERED_STEEL)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, MItems.WITHERED_STEEL, 9)
|
||||
.requires(Ingredient.of(MItems.WITHERED_STEEL_BLOCK))
|
||||
.unlockedBy(MItems.WITHERED_STEEL_BLOCK)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.BUILDING_BLOCKS, MItems.ROFLITE_ALLOY_BLOCK, 1)
|
||||
.requires(Ingredient.of(MItems.ROFLITE_ALLOY_INGOT), 9)
|
||||
.unlockedBy(MItems.ROFLITE_ALLOY_INGOT)
|
||||
.save(consumer)
|
||||
|
||||
ShapelessRecipeBuilder(RecipeCategory.MISC, MItems.ROFLITE_ALLOY_INGOT, 9)
|
||||
.requires(Ingredient.of(MItems.ROFLITE_ALLOY_BLOCK))
|
||||
.unlockedBy(MItems.ROFLITE_ALLOY_BLOCK)
|
||||
.save(consumer)
|
||||
}
|
||||
|
@ -1,22 +1,20 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.recipe.UpgradeRecipe
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addStorageItemRecipes(consumer: RecipeOutput) {
|
||||
// простые батарейки
|
||||
MatteryRecipe(MItems.BATTERY_CRUDE, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.BATTERY_CRUDE)
|
||||
.rowB(Tags.Items.DUSTS_REDSTONE)
|
||||
.rowB(Tags.Items.CROPS_POTATO)
|
||||
.rowB(Tags.Items.INGOTS_IRON)
|
||||
.unlockedBy(Tags.Items.CROPS_POTATO)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.BATTERY_BASIC, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.BATTERY_BASIC)
|
||||
.rowAC(Tags.Items.DUSTS_REDSTONE, Tags.Items.DUSTS_REDSTONE)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
.rowB(MItemTags.IRON_PLATES)
|
||||
@ -24,48 +22,48 @@ fun addStorageItemRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItems.ELECTRIC_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.BATTERY_NORMAL, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.BATTERY_NORMAL)
|
||||
.setUpgradeSource(MItems.BATTERY_BASIC)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.addUpgradeOps(UpgradeRecipe.All)
|
||||
.rowB(MItems.ELECTRIC_PARTS)
|
||||
.row(MItemTags.COPPER_WIRES, MItems.BATTERY_BASIC, MItemTags.COPPER_WIRES)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, Tags.Items.DUSTS_REDSTONE, Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.BATTERY_DENSE, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.BATTERY_DENSE)
|
||||
.setUpgradeSource(MItems.BATTERY_NORMAL)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.addUpgradeOps(UpgradeRecipe.All)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, MItems.ENERGY_BUS, Tags.Items.DUSTS_REDSTONE)
|
||||
.row(MItemTags.GOLD_WIRES, MItems.BATTERY_NORMAL, MItemTags.GOLD_WIRES)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, Tags.Items.DUSTS_REDSTONE, Tags.Items.DUSTS_REDSTONE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.BATTERY_CAPACITOR, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.BATTERY_CAPACITOR)
|
||||
.setUpgradeSource(MItems.BATTERY_NORMAL)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.addUpgradeOps(UpgradeRecipe.All)
|
||||
.row(Tags.Items.DUSTS_REDSTONE, MItems.ENERGY_BUS, Tags.Items.DUSTS_REDSTONE)
|
||||
.row(MItemTags.GOLD_WIRES, MItems.BATTERY_NORMAL, MItemTags.GOLD_WIRES)
|
||||
.row(MItemTags.GOLD_WIRES, Tags.Items.DUSTS_REDSTONE, MItemTags.GOLD_WIRES)
|
||||
.build(consumer)
|
||||
|
||||
// накопители материи
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_BASIC, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_BASIC)
|
||||
.row(MItemTags.IRON_PLATES, MItems.MATTER_CAPACITOR_PARTS, MItemTags.HARDENED_GLASS)
|
||||
.unlockedBy(MItems.MATTER_CAPACITOR_PARTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_NORMAL, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_NORMAL)
|
||||
.setUpgradeSource(MItems.MATTER_CAPACITOR_BASIC)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.addUpgradeOps(UpgradeRecipe.All)
|
||||
.rowB(MItems.MATTER_CAPACITOR_PARTS)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MATTER_CAPACITOR_BASIC, MItemTags.TRITANIUM_PLATES)
|
||||
.rowB(Tags.Items.GEMS_DIAMOND)
|
||||
.unlockedBy(MItems.MATTER_CAPACITOR_BASIC)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_DENSE, category = RecipeCategory.MISC)
|
||||
MatteryRecipe(MItems.MATTER_CAPACITOR_DENSE)
|
||||
.setUpgradeSource(MItems.MATTER_CAPACITOR_NORMAL)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyAllComponents)
|
||||
.addUpgradeOps(UpgradeRecipe.All)
|
||||
.row(MItems.MATTER_CAPACITOR_PARTS, MItemTags.HARDENED_GLASS, MItems.MATTER_CAPACITOR_PARTS)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.MATTER_CAPACITOR_NORMAL, MItemTags.TRITANIUM_PLATES)
|
||||
.rowAC(Tags.Items.ENDER_PEARLS, Tags.Items.ENDER_PEARLS)
|
||||
|
@ -1,54 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.minecraft.data.recipes.ShapelessRecipeBuilder
|
||||
import net.minecraft.data.recipes.SimpleCookingRecipeBuilder
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.util.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addSuspiciousRecipes(consumer: RecipeOutput) {
|
||||
for (item in MItems.SUSPICIOUS_FOODS.ITEMS) {
|
||||
if (item.defaultMaxStackSize == 1) {
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, ItemStack(item))
|
||||
.requires(item.mimicking())
|
||||
.unlockedBy(MItems.PILL_NOT_NORMAL)
|
||||
.requires(MItems.PILL_NOT_NORMAL)
|
||||
.save(consumer)
|
||||
} else {
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, ItemStack(item, 8))
|
||||
.requires(item.mimicking(), 8)
|
||||
.unlockedBy(MItems.PILL_NOT_NORMAL)
|
||||
.requires(MItems.PILL_NOT_NORMAL)
|
||||
.save(consumer)
|
||||
}
|
||||
}
|
||||
|
||||
MatteryRecipe(MItems.SUSPICIOUS_FOODS.GOLDEN_CARROT, 8, RecipeCategory.FOOD)
|
||||
.row(MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.row(MItems.SUSPICIOUS_FOODS.CARROT, Tags.Items.NUGGETS_GOLD, MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.row(MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT, MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.unlockedBy(MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
.build(consumer, "upgrade")
|
||||
|
||||
val cooking = listOf(
|
||||
MItems.SUSPICIOUS_FOODS.POTATO to MItems.SUSPICIOUS_FOODS.BAKED_POTATO,
|
||||
MItems.SUSPICIOUS_FOODS.BEEF to MItems.SUSPICIOUS_FOODS.COOKED_BEEF,
|
||||
MItems.SUSPICIOUS_FOODS.CHICKEN to MItems.SUSPICIOUS_FOODS.COOKED_CHICKEN,
|
||||
MItems.SUSPICIOUS_FOODS.COD to MItems.SUSPICIOUS_FOODS.COOKED_COD,
|
||||
MItems.SUSPICIOUS_FOODS.MUTTON to MItems.SUSPICIOUS_FOODS.COOKED_MUTTON,
|
||||
MItems.SUSPICIOUS_FOODS.PORKCHOP to MItems.SUSPICIOUS_FOODS.COOKED_PORKCHOP,
|
||||
MItems.SUSPICIOUS_FOODS.RABBIT to MItems.SUSPICIOUS_FOODS.COOKED_RABBIT,
|
||||
MItems.SUSPICIOUS_FOODS.SALMON to MItems.SUSPICIOUS_FOODS.COOKED_SALMON,
|
||||
)
|
||||
|
||||
for ((source, target) in cooking) {
|
||||
SimpleCookingRecipeBuilder.smelting(Ingredient.of(source), RecipeCategory.FOOD, target, 0.1f, 200).unlockedBy(source).save(consumer, modLocation("cooking_${source.registryName!!.path}"))
|
||||
SimpleCookingRecipeBuilder.smoking(Ingredient.of(source), RecipeCategory.FOOD, target, 0.1f, 100).unlockedBy(source).save(consumer, modLocation("smoking_${source.registryName!!.path}"))
|
||||
SimpleCookingRecipeBuilder.campfireCooking(Ingredient.of(source), RecipeCategory.FOOD, target, 0.1f, 600).unlockedBy(source).save(consumer, modLocation("campfire_cooking_${source.registryName!!.path}"))
|
||||
}
|
||||
}
|
@ -1,68 +1,56 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.recipes
|
||||
|
||||
import net.minecraft.data.recipes.RecipeCategory
|
||||
import net.minecraft.data.recipes.RecipeOutput
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.recipe.UpgradeRecipe
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
|
||||
fun addToolsRecipes(consumer: RecipeOutput) {
|
||||
MatteryRecipe(MItems.ENERGY_SWORD, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.ENERGY_SWORD)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.GOLD_WIRES)
|
||||
.row(MItemTags.CARBON_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.GOLD_WIRES)
|
||||
.row(MItems.BATTERY_CAPACITOR, MItems.TRITANIUM_SWORD, MItemTags.ADVANCED_CIRCUIT)
|
||||
.unlockedBy(MItems.BATTERY_CAPACITOR)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyEnergyCharge)
|
||||
.addUpgradeOps(UpgradeRecipe.CopyEnchantments)
|
||||
.build(consumer)
|
||||
.buildEnergetic(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_SWORD, category = RecipeCategory.COMBAT)
|
||||
MatteryRecipe(MItems.TRITANIUM_SWORD)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_SHOVEL, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.TRITANIUM_SHOVEL)
|
||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_PICKAXE, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.TRITANIUM_PICKAXE)
|
||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_AXE, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.TRITANIUM_AXE)
|
||||
.rowAB(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowAB(MItemTags.TRITANIUM_INGOTS, Tags.Items.RODS_WOODEN)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_AXE, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.TRITANIUM_AXE)
|
||||
.rowBC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowBC(Tags.Items.RODS_WOODEN, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer, "alt")
|
||||
|
||||
MatteryRecipe(MItems.TRITANIUM_HOE, category = RecipeCategory.TOOLS)
|
||||
MatteryRecipe(MItems.TRITANIUM_HOE)
|
||||
.rowBC(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(MItemTags.TRITANIUM_INGOTS)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.WITHERED_STEEL_SWORD, category = RecipeCategory.COMBAT)
|
||||
.rowB(MItems.WITHERED_STEEL)
|
||||
.rowB(MItems.WITHERED_STEEL)
|
||||
.rowB(Tags.Items.RODS_WOODEN)
|
||||
.unlockedBy(MItems.WITHERED_STEEL)
|
||||
.build(consumer)
|
||||
}
|
||||
|
@ -1,110 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import net.minecraft.tags.BlockTags
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.level.block.Blocks
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
fun addConstructionTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.blocks.Appender(BlockTags.BEACON_BASE_BLOCKS)
|
||||
.add(MBlocks.TRITANIUM_INGOT_BLOCK)
|
||||
.add(MBlocks.DILITHIUM_CRYSTAL_BLOCK)
|
||||
.add(MBlocks.WITHERED_STEEL_BLOCK)
|
||||
.add(MBlocks.ROFLITE_ALLOY_BLOCK)
|
||||
|
||||
tagsProvider.blocks.Appender(MBlockTags.MULTIBLOCK_STRUCTURE)
|
||||
.add(MBlockTags.MULTIBLOCK_HARD_STRUCTURE, MBlockTags.MULTIBLOCK_SOFT_STRUCTURE)
|
||||
|
||||
tagsProvider.blocks.Appender(MBlockTags.MULTIBLOCK_SOFT_STRUCTURE)
|
||||
.add(MBlockTags.HARDENED_GLASS)
|
||||
|
||||
tagsProvider.blocks.Appender(MBlockTags.MULTIBLOCK_HARD_STRUCTURE)
|
||||
.add(MRegistry.VENT.allBlocks.values)
|
||||
.add(MRegistry.VENT_ALTERNATIVE.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_BLOCK.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_BLOCK.blocks.values.stream().flatMap { it.values.stream() })
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.CRAFTING_TABLES).add(Items.CRAFTING_TABLE)
|
||||
tagsProvider.items.Appender(MItemTags.WORKBENCHES).add(Items.CRAFTING_TABLE)
|
||||
tagsProvider.items.Appender(MItemTags.WORKBENCH).add(Items.CRAFTING_TABLE)
|
||||
tagsProvider.items.Appender(MItemTags.FURNACES).add(Items.FURNACE)
|
||||
|
||||
tagsProvider.blocks.Appender(MBlockTags.CRAFTING_TABLES).add(Blocks.CRAFTING_TABLE)
|
||||
tagsProvider.blocks.Appender(MBlockTags.WORKBENCHES).add(Blocks.CRAFTING_TABLE)
|
||||
tagsProvider.blocks.Appender(MBlockTags.WORKBENCH).add(Blocks.CRAFTING_TABLE)
|
||||
|
||||
tagsProvider.items.forge("hardened_glass").add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
||||
tagsProvider.items.forge("hardened_glass/colorless").add(MRegistry.INDUSTRIAL_GLASS.item)
|
||||
tagsProvider.items.forge("hardened_glass/tinted").add(MRegistry.INDUSTRIAL_GLASS.items.values)
|
||||
|
||||
tagsProvider.items.forge("hardened_glass_panes").add(MRegistry.INDUSTRIAL_GLASS_PANE.allItems.values)
|
||||
tagsProvider.items.forge("hardened_glass_panes/colorless").add(MRegistry.INDUSTRIAL_GLASS_PANE.item)
|
||||
tagsProvider.items.forge("hardened_glass_panes/tinted").add(MRegistry.INDUSTRIAL_GLASS_PANE.items.values)
|
||||
|
||||
tagsProvider.blocks.forge("hardened_glass").add(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||
tagsProvider.blocks.forge("hardened_glass/colorless").add(MRegistry.INDUSTRIAL_GLASS.block)
|
||||
tagsProvider.blocks.forge("hardened_glass/tinted").add(MRegistry.INDUSTRIAL_GLASS.blocks.values)
|
||||
|
||||
tagsProvider.blocks.forge("hardened_glass_panes").add(MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks.values)
|
||||
tagsProvider.blocks.forge("hardened_glass_panes/colorless").add(MRegistry.INDUSTRIAL_GLASS_PANE.block)
|
||||
tagsProvider.blocks.forge("hardened_glass_panes/tinted").add(MRegistry.INDUSTRIAL_GLASS_PANE.blocks.values)
|
||||
|
||||
MRegistry.INDUSTRIAL_GLASS.forEachItem { s, _, item -> tagsProvider.items.forge("hardened_glass/$s").add(item) }
|
||||
MRegistry.INDUSTRIAL_GLASS_PANE.forEachItem { s, _, item -> tagsProvider.items.forge("hardened_glass_panes/$s").add(item) }
|
||||
|
||||
MRegistry.INDUSTRIAL_GLASS.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass/$s").add(block) }
|
||||
MRegistry.INDUSTRIAL_GLASS_PANE.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass_panes/$s").add(block) }
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
||||
tagsProvider.blocks.Appender(MBlockTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||
tagsProvider.items.Appender(MItemTags.CARGO_CRATES).add(MRegistry.CARGO_CRATES.allItems.values)
|
||||
tagsProvider.blocks.Appender(MBlockTags.CARGO_CRATES).add(MRegistry.CARGO_CRATES.allBlocks.values)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.DOORS).add(MItems.TRITANIUM_DOOR.values)
|
||||
tagsProvider.blocks.Appender(BlockTags.DOORS).add(MBlocks.TRITANIUM_DOOR.values)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.TRAPDOORS).add(MItems.TRITANIUM_TRAPDOOR.values)
|
||||
tagsProvider.blocks.Appender(BlockTags.TRAPDOORS).add(MBlocks.TRITANIUM_TRAPDOOR.values)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.PRESSURE_PLATES).add(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.STAIRS)
|
||||
.add(MRegistry.FLOOR_TILES_STAIRS.blocks.values)
|
||||
.add(MRegistry.TRITANIUM_STAIRS.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks)
|
||||
.add(MBlocks.TRITANIUM_STRIPED_STAIRS.values)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.SLABS)
|
||||
.add(MRegistry.TRITANIUM_SLAB.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks)
|
||||
.add(MRegistry.FLOOR_TILES_SLAB.blocks.values)
|
||||
.add(MBlocks.TRITANIUM_STRIPED_SLAB.values)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.WALLS)
|
||||
.add(MRegistry.TRITANIUM_WALL.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks)
|
||||
.add(MBlocks.TRITANIUM_STRIPED_WALL.values)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.STAIRS)
|
||||
.add(MRegistry.FLOOR_TILES_STAIRS.items.values)
|
||||
.add(MRegistry.TRITANIUM_STAIRS.allItems.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_STAIRS.flatItems)
|
||||
.add(MItems.TRITANIUM_STRIPED_STAIRS.values)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.SLABS)
|
||||
.add(MRegistry.TRITANIUM_SLAB.allItems.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatItems)
|
||||
.add(MRegistry.FLOOR_TILES_SLAB.items.values)
|
||||
.add(MItems.TRITANIUM_STRIPED_SLAB.values)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.WALLS)
|
||||
.add(MRegistry.TRITANIUM_WALL.allItems.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatItems)
|
||||
.add(MItems.TRITANIUM_STRIPED_WALL.values)
|
||||
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
fun addDyeTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.addToDyeTags(MRegistry.CARGO_CRATES.allItems)
|
||||
|
||||
tagsProvider.addToDyeTags(MRegistry.INDUSTRIAL_GLASS.allItems)
|
||||
tagsProvider.addToDyeTags(MRegistry.INDUSTRIAL_GLASS_PANE.allItems)
|
||||
|
||||
tagsProvider.addToDyeTags(MRegistry.DECORATIVE_CRATE.items)
|
||||
|
||||
tagsProvider.addToDyeTags(MItems.TRITANIUM_DOOR)
|
||||
tagsProvider.addToDyeTags(MItems.TRITANIUM_TRAPDOOR)
|
||||
tagsProvider.addToDyeTags(MRegistry.TRITANIUM_PRESSURE_PLATE.allItems)
|
||||
|
||||
tagsProvider.addToDyeTags(MRegistry.FLOOR_TILES_STAIRS.items)
|
||||
tagsProvider.addToDyeTags(MRegistry.TRITANIUM_STAIRS.items)
|
||||
|
||||
tagsProvider.addToDyeTags(MRegistry.TRITANIUM_SLAB.items)
|
||||
tagsProvider.addToDyeTags(MRegistry.FLOOR_TILES_SLAB.items)
|
||||
tagsProvider.addToDyeTags(MRegistry.UNREFINED_FLOOR_TILES.items)
|
||||
|
||||
tagsProvider.addToDyeTags(MRegistry.TRITANIUM_WALL.items)
|
||||
|
||||
tagsProvider.addToDyeTags(MItems.ANDROID_STATION)
|
||||
tagsProvider.addToDyeTags(MItems.ENERGY_SERVO)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_DECOMPOSER)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_CAPACITOR_BANK)
|
||||
tagsProvider.addToDyeTags(MItems.BATTERY_BANK)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_SCANNER)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_PANEL)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_REPLICATOR)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_BOTTLER)
|
||||
tagsProvider.addToDyeTags(MItems.ENERGY_COUNTER)
|
||||
tagsProvider.addToDyeTags(MItems.CHEMICAL_GENERATOR)
|
||||
tagsProvider.addToDyeTags(MItems.PLATE_PRESS)
|
||||
tagsProvider.addToDyeTags(MItems.TWIN_PLATE_PRESS)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_RECYCLER)
|
||||
|
||||
tagsProvider.addToDyeTags(MItems.POWERED_FURNACE)
|
||||
tagsProvider.addToDyeTags(MItems.POWERED_SMOKER)
|
||||
tagsProvider.addToDyeTags(MItems.POWERED_BLAST_FURNACE)
|
||||
|
||||
tagsProvider.addToDyeTags(MItems.DRIVE_VIEWER)
|
||||
tagsProvider.addToDyeTags(MItems.ITEM_MONITOR)
|
||||
tagsProvider.addToDyeTags(MItems.STORAGE_POWER_SUPPLIER)
|
||||
|
||||
tagsProvider.addToDyeTags(MItems.COBBLESTONE_GENERATOR)
|
||||
tagsProvider.addToDyeTags(MItems.ESSENCE_STORAGE)
|
||||
tagsProvider.addToDyeTags(MItems.MATTER_RECONSTRUCTOR)
|
||||
tagsProvider.addToDyeTags(MItems.ANDROID_CHARGER)
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addEquipmentTags(tagsProvider: TagsProvider) {
|
||||
|
||||
// TODO: is new tag appropriate for modded armors?
|
||||
tagsProvider.items.Appender(Tags.Items.ARMORS)
|
||||
.add(MItems.TRITANIUM_HELMET, MItems.SIMPLE_TRITANIUM_HELMET)
|
||||
.add(MItems.TRITANIUM_CHESTPLATE, MItems.SIMPLE_TRITANIUM_CHESTPLATE, MItems.PORTABLE_GRAVITATION_STABILIZER)
|
||||
.add(MItems.TRITANIUM_PANTS, MItems.SIMPLE_TRITANIUM_PANTS)
|
||||
.add(MItems.TRITANIUM_BOOTS, MItems.SIMPLE_TRITANIUM_BOOTS)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.DYEABLE).add(MItems.TRITANIUM_ARMOR)
|
||||
tagsProvider.items.Appender(ItemTags.TRIMMABLE_ARMOR).add(MItems.SIMPLE_TRITANIUM_ARMOR)
|
||||
tagsProvider.items.Appender(ItemTags.FREEZE_IMMUNE_WEARABLES).add(MItems.TRITANIUM_ARMOR)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.HEAD_ARMOR)
|
||||
.add(MItems.TRITANIUM_HELMET)
|
||||
.add(MItems.SIMPLE_TRITANIUM_HELMET)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.CHEST_ARMOR)
|
||||
.add(MItems.TRITANIUM_CHESTPLATE)
|
||||
.add(MItems.SIMPLE_TRITANIUM_CHESTPLATE)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.LEG_ARMOR)
|
||||
.add(MItems.TRITANIUM_PANTS)
|
||||
.add(MItems.SIMPLE_TRITANIUM_PANTS)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.FOOT_ARMOR)
|
||||
.add(MItems.TRITANIUM_BOOTS)
|
||||
.add(MItems.SIMPLE_TRITANIUM_BOOTS)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.SWORDS)
|
||||
.add(MItems.TRITANIUM_SWORD)
|
||||
.add(MItems.ENERGY_SWORD)
|
||||
.add(MItems.FALLING_SUN)
|
||||
.add(MItems.WITHERED_STEEL_SWORD)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.AXES).add(MItems.TRITANIUM_AXE)
|
||||
tagsProvider.items.Appender(ItemTags.PICKAXES).add(MItems.TRITANIUM_PICKAXE)
|
||||
tagsProvider.items.Appender(ItemTags.SHOVELS).add(MItems.TRITANIUM_SHOVEL)
|
||||
tagsProvider.items.Appender(ItemTags.HOES).add(MItems.TRITANIUM_HOE)
|
||||
tagsProvider.items.Appender(Tags.Items.TOOLS_SHEAR).add(MItems.TRITANIUM_SHEARS)
|
||||
tagsProvider.items.Appender(Tags.Items.TOOLS_SHIELD).add(MItems.TRITANIUM_SHIELD)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.TOOLS_HAMMERS).add(MItems.EXPLOSIVE_HAMMER)
|
||||
tagsProvider.items.forge("tools").add(MItemTags.TOOLS_HAMMERS)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.DURABILITY_ENCHANTABLE)
|
||||
.add(MItems.EXPLOSIVE_HAMMER)
|
||||
.add(MItems.TRITANIUM_SHEARS)
|
||||
.add(MItems.TRITANIUM_SHIELD)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.MINING_ENCHANTABLE)
|
||||
.add(MItems.TRITANIUM_SHEARS)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.EQUIPPABLE_ENCHANTABLE)
|
||||
.add(MItems.PORTABLE_GRAVITATION_STABILIZER)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.VANISHING_ENCHANTABLE)
|
||||
.add(MItems.PORTABLE_GRAVITATION_STABILIZER)
|
||||
|
||||
}
|
@ -1,152 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import net.minecraft.world.item.Tiers
|
||||
import net.minecraft.world.level.block.Block
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
fun addMineableTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.requiresPickaxe(
|
||||
MBlocks.MATTER_CABLE,
|
||||
MBlocks.STORAGE_CABLE
|
||||
)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_DOOR.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_TRAPDOOR.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.PAINTER, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MBlocks.ENERGY_CABLES.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MBlocks.GRILL.values, Tiers.STONE)
|
||||
|
||||
tagsProvider.requiresPickaxe(listOf<Block>(
|
||||
*MBlocks.ANDROID_STATION.values.toTypedArray(),
|
||||
*MBlocks.BATTERY_BANK.values.toTypedArray(),
|
||||
*MBlocks.MATTER_DECOMPOSER.values.toTypedArray(),
|
||||
*MBlocks.MATTER_CAPACITOR_BANK.values.toTypedArray(),
|
||||
MBlocks.PATTERN_STORAGE,
|
||||
*MBlocks.MATTER_SCANNER.values.toTypedArray(),
|
||||
*MBlocks.MATTER_PANEL.values.toTypedArray(),
|
||||
*MBlocks.MATTER_REPLICATOR.values.toTypedArray(),
|
||||
*MBlocks.MATTER_BOTTLER.values.toTypedArray(),
|
||||
*MBlocks.ENERGY_COUNTER.values.toTypedArray(),
|
||||
*MBlocks.CHEMICAL_GENERATOR.values.toTypedArray(),
|
||||
*MBlocks.PLATE_PRESS.values.toTypedArray(),
|
||||
*MBlocks.TWIN_PLATE_PRESS.values.toTypedArray(),
|
||||
*MBlocks.MATTER_RECYCLER.values.toTypedArray(),
|
||||
MBlocks.MATTER_ENTANGLER,
|
||||
|
||||
*MBlocks.POWERED_FURNACE.values.toTypedArray(),
|
||||
*MBlocks.POWERED_SMOKER.values.toTypedArray(),
|
||||
*MBlocks.POWERED_BLAST_FURNACE.values.toTypedArray(),
|
||||
|
||||
MBlocks.STORAGE_BUS,
|
||||
MBlocks.STORAGE_IMPORTER,
|
||||
MBlocks.STORAGE_EXPORTER,
|
||||
|
||||
*MBlocks.DRIVE_VIEWER.values.toTypedArray(),
|
||||
MBlocks.DRIVE_RACK,
|
||||
*MBlocks.ITEM_MONITOR.values.toTypedArray(),
|
||||
*MBlocks.STORAGE_POWER_SUPPLIER.values.toTypedArray(),
|
||||
|
||||
MBlocks.PHANTOM_ATTRACTOR,
|
||||
*MBlocks.ENERGY_SERVO.values.toTypedArray(),
|
||||
|
||||
MBlocks.TRITANIUM_INGOT_BLOCK,
|
||||
MBlocks.WITHERED_STEEL_BLOCK,
|
||||
|
||||
MBlocks.METAL_JUNK,
|
||||
MBlocks.METAL_MESH,
|
||||
MBlocks.TRITANIUM_BARS,
|
||||
MBlocks.METAL_RAILING,
|
||||
|
||||
MBlocks.ENGINE,
|
||||
MBlocks.HOLO_SIGN,
|
||||
*MBlocks.COBBLESTONE_GENERATOR.values.toTypedArray(),
|
||||
*MBlocks.ESSENCE_STORAGE.values.toTypedArray(),
|
||||
*MBlocks.MATTER_RECONSTRUCTOR.values.toTypedArray(),
|
||||
MBlocks.FLUID_TANK,
|
||||
*MBlocks.ANDROID_CHARGER.values.toTypedArray(),
|
||||
|
||||
MBlocks.TRITANIUM_HULL,
|
||||
MBlocks.BLACK_HOLE_GENERATOR,
|
||||
MBlocks.MATTER_INJECTOR,
|
||||
MBlocks.ANTIMATTER_INJECTOR,
|
||||
MBlocks.HIGH_ENERGY_PARTICLE_COLLECTOR,
|
||||
|
||||
MBlocks.ITEM_INPUT_HATCH,
|
||||
MBlocks.ITEM_OUTPUT_HATCH,
|
||||
MBlocks.ENERGY_INPUT_HATCH,
|
||||
MBlocks.ENERGY_OUTPUT_HATCH,
|
||||
MBlocks.MATTER_INPUT_HATCH,
|
||||
MBlocks.MATTER_OUTPUT_HATCH,
|
||||
MBlocks.ENERGY_INPUT_INTERFACE,
|
||||
MBlocks.ENERGY_OUTPUT_INTERFACE,
|
||||
|
||||
MBlocks.FLYWHEEL_SHAFT,
|
||||
MBlocks.FLYWHEEL_BEARING,
|
||||
MBlocks.FLYWHEEL_HOUSING,
|
||||
MBlocks.FLYWHEEL_BATTERY,
|
||||
|
||||
MBlocks.GENERATOR_BLOCK,
|
||||
MBlocks.MODULAR_FRAME,
|
||||
MBlocks.HEAVY_MODULAR_FRAME,
|
||||
|
||||
MBlocks.REINFORCED_REDSTONE_LAMP,
|
||||
MBlocks.REINFORCED_REDSTONE_LAMP_INVERTED,
|
||||
), Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(listOf(
|
||||
MBlocks.DILITHIUM_ORE,
|
||||
MBlocks.DEEPSLATE_DILITHIUM_ORE,
|
||||
MBlocks.DILITHIUM_CRYSTAL_BLOCK,
|
||||
MBlocks.ROFLITE_ALLOY_BLOCK,
|
||||
|
||||
MBlocks.GRAVITATION_STABILIZER,
|
||||
MBlocks.GRAVITATION_STABILIZER_LENS,
|
||||
), Tiers.DIAMOND)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ANVIL.values.stream().flatMap { it.stream() }, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ORE, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.DEEPSLATE_TRITANIUM_ORE, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_RAW_BLOCK, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_BLOCK.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_STAIRS.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_WALL.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_SLAB.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.CARBON_FIBRE_BLOCK, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.INFINITE_WATER_SOURCE, Tiers.STONE)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.CARGO_CRATES.allBlocks.values, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.VENT.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.VENT_ALTERNATIVE.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_BLOCK.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.COMPUTER_TERMINAL.allBlocks.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MRegistry.STAR_CHAIR.allBlocks.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_SLAB.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_WALL.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STAIRS.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_BLOCK.flatBlocks, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES.blocks.values)
|
||||
tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES_STAIRS.blocks.values)
|
||||
tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES_SLAB.blocks.values)
|
||||
tagsProvider.requiresShovel(MRegistry.UNREFINED_FLOOR_TILES.blocks.values)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS.allBlocks.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MRegistry.DECORATIVE_CRATE.allBlocks.values, Tiers.STONE)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.LABORATORY_LAMP, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.LABORATORY_LAMP_INVERTED, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.METAL_BEAM, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.METAL_BEAM_CENTER, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.DANGER_STRIPE_BLOCK)
|
||||
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addResourceTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.circuits.add("basic", MItems.BASIC_CONTROL_CIRCUIT)
|
||||
tagsProvider.circuits.add("advanced", MItems.ADVANCED_CONTROL_CIRCUIT)
|
||||
|
||||
tagsProvider.stoneOre("tritanium", MBlocks.TRITANIUM_ORE)
|
||||
tagsProvider.stoneOre("dilithium", MBlocks.DILITHIUM_ORE)
|
||||
|
||||
tagsProvider.deepslateOre("tritanium", MBlocks.DEEPSLATE_TRITANIUM_ORE)
|
||||
tagsProvider.deepslateOre("dilithium", MBlocks.DEEPSLATE_DILITHIUM_ORE)
|
||||
|
||||
tagsProvider.plates.add("tritanium", MItems.TRITANIUM_PLATE)
|
||||
tagsProvider.plates.add("iron", MItems.IRON_PLATE)
|
||||
tagsProvider.plates.add("gold", MItems.GOLD_PLATE)
|
||||
tagsProvider.plates.add("carbon", MItems.CARBON_MESH)
|
||||
|
||||
tagsProvider.dusts.add("tritanium", MItems.TRITANIUM_DUST)
|
||||
tagsProvider.ingots.add("tritanium", MItems.TRITANIUM_INGOT)
|
||||
tagsProvider.ingots.add("withered_steel", MItems.WITHERED_STEEL)
|
||||
tagsProvider.ingots.add("roflite_alloy", MItems.ROFLITE_ALLOY_INGOT)
|
||||
|
||||
tagsProvider.wires.add("copper", MItems.COPPER_WIRING)
|
||||
tagsProvider.wires.add("gold", MItems.GOLD_WIRING)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.TRITANIUM_NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
||||
tagsProvider.items.Appender(MItemTags.NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
||||
|
||||
tagsProvider.items.forge("reinforced_tritanium").add(MItems.REINFORCED_TRITANIUM_PLATE)
|
||||
|
||||
tagsProvider.storageBlocksAsItem.add("tritanium", MItems.TRITANIUM_INGOT_BLOCK)
|
||||
tagsProvider.storageBlocksAsBlock.add("tritanium", MBlocks.TRITANIUM_INGOT_BLOCK)
|
||||
tagsProvider.storageBlocksAsItem.add("withered_steel", MItems.WITHERED_STEEL_BLOCK)
|
||||
tagsProvider.storageBlocksAsBlock.add("withered_steel", MBlocks.WITHERED_STEEL_BLOCK)
|
||||
tagsProvider.storageBlocksAsItem.add("roflite_alloy", MItems.ROFLITE_ALLOY_BLOCK)
|
||||
tagsProvider.storageBlocksAsBlock.add("roflite_alloy", MBlocks.ROFLITE_ALLOY_BLOCK)
|
||||
|
||||
tagsProvider.singleDropOre(
|
||||
MBlocks.TRITANIUM_ORE,
|
||||
MBlocks.DEEPSLATE_TRITANIUM_ORE
|
||||
)
|
||||
|
||||
tagsProvider.denseDropOre(
|
||||
MBlocks.DILITHIUM_ORE,
|
||||
MBlocks.DEEPSLATE_DILITHIUM_ORE,
|
||||
)
|
||||
|
||||
tagsProvider.clump("tritanium", MItems.TRITANIUM_ORE_CLUMP, MBlocks.TRITANIUM_RAW_BLOCK)
|
||||
|
||||
tagsProvider.gems.add(MItems.DILITHIUM_CRYSTAL)
|
||||
|
||||
tagsProvider.storageBlocksAsItem.add("dilithium", MItems.DILITHIUM_CRYSTAL_BLOCK)
|
||||
tagsProvider.storageBlocksAsBlock.add("dilithium", MBlocks.DILITHIUM_CRYSTAL_BLOCK)
|
||||
|
||||
tagsProvider.items.forge("gems/dilithium").add(MItems.DILITHIUM_CRYSTAL)
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import ru.dbotthepony.mc.otm.registry.MStructureTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MStructures
|
||||
|
||||
fun addStructureTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.structures.Appender(MStructureTags.LABORATORIES).add(MStructures.LABORATORY)
|
||||
|
||||
tagsProvider.structures.Appender(MStructureTags.FIELD_RESEARCH_PODS)
|
||||
.add(MStructures.FIELD_RESEARCH_POD)
|
||||
.add(MStructures.FIELD_RESEARCH_POD_RUIN)
|
||||
|
||||
tagsProvider.structures.Appender(MStructureTags.WRECKAGES).add(MStructures.WRECKAGE)
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.entity.EntityType
|
||||
import net.minecraft.world.item.Items
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
|
||||
fun addSuspiciousTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_MEAT_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.MEAT_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_FISH_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.FISH_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_COOKIE_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKIE_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.OWNED_CARROT_CONSUMERS)
|
||||
.add(MItems.SUSPICIOUS_FOODS.CARROT_CONSUMERS)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.CARROT_CONSUMERS)
|
||||
.add(EntityType.RABBIT)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.RABBIT_FOOD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.CARROT)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.WOLF_FOOD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.MUTTON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.CHICKEN)
|
||||
.add(MItems.SUSPICIOUS_FOODS.BEEF)
|
||||
.add(MItems.SUSPICIOUS_FOODS.RABBIT)
|
||||
.add(MItems.SUSPICIOUS_FOODS.PORKCHOP)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_MUTTON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_BEEF)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_CHICKEN)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_RABBIT)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_PORKCHOP)
|
||||
.add(MItems.SUSPICIOUS_FOODS.ROTTEN_FLESH)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.MEAT_CONSUMERS)
|
||||
.add(EntityType.WOLF)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.FISH_CONSUMERS)
|
||||
.add(EntityType.OCELOT)
|
||||
.add(EntityType.CAT)
|
||||
|
||||
tagsProvider.entityTypes.Appender(MItems.SUSPICIOUS_FOODS.COOKIE_CONSUMERS)
|
||||
.add(EntityType.PARROT)
|
||||
|
||||
// Cats easily can eat cooked food and a lot of cats even PREFER to eat fish cooked,
|
||||
// literally begging for fish when they smell it being cooked (and ignoring it while it lays raw)
|
||||
// What mojang were thinking?
|
||||
tagsProvider.items.Appender(ItemTags.OCELOT_FOOD)
|
||||
.add(Items.COOKED_COD)
|
||||
.add(Items.COOKED_SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_SALMON)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.CAT_FOOD)
|
||||
.add(Items.COOKED_COD)
|
||||
.add(Items.COOKED_SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_COD)
|
||||
.add(MItems.SUSPICIOUS_FOODS.SALMON)
|
||||
.add(MItems.SUSPICIOUS_FOODS.COOKED_SALMON)
|
||||
}
|
@ -1,45 +1,137 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.tags.BlockTags
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.effect.MobEffects
|
||||
import net.minecraft.world.item.Items
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import ru.dbotthepony.kommons.collect.flatMap
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import net.minecraft.world.item.Tiers
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.Blocks
|
||||
import net.minecraftforge.common.Tags
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.game.MFluids
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
import ru.dbotthepony.mc.otm.registry.MFluids
|
||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
|
||||
fun addTags(tagsProvider: TagsProvider) {
|
||||
tagsProvider.items.forge("pistons").add(Items.PISTON)
|
||||
tagsProvider.circuits.add("basic", MItems.BASIC_CONTROL_CIRCUIT)
|
||||
tagsProvider.circuits.add("advanced", MItems.ADVANCED_CONTROL_CIRCUIT)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.BEACON_PAYMENT_ITEMS)
|
||||
.add(MItems.TRITANIUM_INGOT)
|
||||
.add(MItems.DILITHIUM_CRYSTAL)
|
||||
.add(MItems.WITHERED_STEEL)
|
||||
.add(MItems.ROFLITE_ALLOY_INGOT)
|
||||
tagsProvider.dusts.add("tritanium", MItems.TRITANIUM_DUST)
|
||||
tagsProvider.ingots.add("tritanium", MItems.TRITANIUM_INGOT)
|
||||
tagsProvider.items.Appender(ItemTags.BEACON_PAYMENT_ITEMS).add(MItems.TRITANIUM_INGOT)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.MEAT).add(MItems.NUTRIENT_PASTE)
|
||||
tagsProvider.plates.add("tritanium", MItems.TRITANIUM_PLATE)
|
||||
tagsProvider.plates.add("iron", MItems.IRON_PLATE)
|
||||
tagsProvider.plates.add("gold", MItems.GOLD_PLATE)
|
||||
tagsProvider.plates.add("carbon", MItems.CARBON_MESH)
|
||||
|
||||
tagsProvider.fluids.forge("experience").add(MFluids.LIQUID_XP).add(MFluids.LIQUID_XP_FLOWING)
|
||||
tagsProvider.fluidTypes.forge("experience").add(MFluids.LIQUID_XP_TYPE)
|
||||
// tagsProvider.fluids.forge("experience").add(MFluids.LIQUID_XP).add(MFluids.LIQUID_XP_FLOWING)
|
||||
// tagsProvider.fluidTypes.forge("experience").add(MFluids.LIQUID_XP_TYPE)
|
||||
|
||||
tagsProvider.items.forge("reinforced_tritanium").add(MItems.REINFORCED_TRITANIUM_PLATE)
|
||||
|
||||
tagsProvider.storageBlocksAsItem.add("tritanium", MItems.TRITANIUM_INGOT_BLOCK)
|
||||
tagsProvider.storageBlocksAsBlock.add("tritanium", MBlocks.TRITANIUM_INGOT_BLOCK)
|
||||
tagsProvider.blocks.Appender(BlockTags.BEACON_BASE_BLOCKS).add(MBlocks.TRITANIUM_INGOT_BLOCK)
|
||||
|
||||
tagsProvider.stoneOre("tritanium", MBlocks.TRITANIUM_ORE)
|
||||
tagsProvider.deepslateOre("tritanium", MBlocks.DEEPSLATE_TRITANIUM_ORE)
|
||||
tagsProvider.singleDropOre(
|
||||
MBlocks.TRITANIUM_ORE,
|
||||
MBlocks.DEEPSLATE_TRITANIUM_ORE
|
||||
)
|
||||
|
||||
tagsProvider.clump("tritanium", MItems.TRITANIUM_ORE_CLUMP, MBlocks.TRITANIUM_RAW_BLOCK)
|
||||
|
||||
tagsProvider.wires.add("copper", MItems.COPPER_WIRING)
|
||||
tagsProvider.wires.add("gold", MItems.GOLD_WIRING)
|
||||
|
||||
tagsProvider.requiresPickaxe(
|
||||
MBlocks.MATTER_CABLE,
|
||||
MBlocks.STORAGE_CABLE
|
||||
)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.CRAFTING_TABLES).add(Items.CRAFTING_TABLE)
|
||||
tagsProvider.items.Appender(MItemTags.WORKBENCHES).add(Items.CRAFTING_TABLE)
|
||||
tagsProvider.items.Appender(MItemTags.WORKBENCH).add(Items.CRAFTING_TABLE)
|
||||
tagsProvider.items.Appender(MItemTags.FURNACES).add(Items.FURNACE)
|
||||
tagsProvider.blocks.Appender(MBlockTags.CRAFTING_TABLES).add(Blocks.CRAFTING_TABLE)
|
||||
tagsProvider.blocks.Appender(MBlockTags.WORKBENCHES).add(Blocks.CRAFTING_TABLE)
|
||||
tagsProvider.blocks.Appender(MBlockTags.WORKBENCH).add(Blocks.CRAFTING_TABLE)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.CRAFTING_TABLES)
|
||||
.add(MItemTags.WORKBENCHES)
|
||||
.add(MItemTags.WORKBENCH)
|
||||
|
||||
tagsProvider.blocks.Appender(MBlockTags.CRAFTING_TABLES)
|
||||
.add(MBlockTags.WORKBENCHES)
|
||||
.add(MBlockTags.WORKBENCH)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.MINECART_CARGO_CRATES).add(MItems.CARGO_CRATE_MINECARTS.values)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.ANVIL).add(MBlocks.TRITANIUM_ANVIL.values.stream().flatMap { it.stream() })
|
||||
tagsProvider.items.Appender(ItemTags.ANVIL).add(MItems.TRITANIUM_ANVIL.values.stream().flatMap { it.stream() })
|
||||
tagsProvider.items.forge("hardened_glass").add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
||||
tagsProvider.items.forge("hardened_glass/colorless").add(MRegistry.INDUSTRIAL_GLASS.item)
|
||||
tagsProvider.items.forge("hardened_glass/tinted").add(MRegistry.INDUSTRIAL_GLASS.items.values)
|
||||
|
||||
tagsProvider.items.forge("hardened_glass_panes").add(MRegistry.INDUSTRIAL_GLASS_PANE.allItems.values)
|
||||
tagsProvider.items.forge("hardened_glass_panes/colorless").add(MRegistry.INDUSTRIAL_GLASS_PANE.item)
|
||||
tagsProvider.items.forge("hardened_glass_panes/tinted").add(MRegistry.INDUSTRIAL_GLASS_PANE.items.values)
|
||||
|
||||
MRegistry.INDUSTRIAL_GLASS.forEachItem { s, _, item -> tagsProvider.items.forge("hardened_glass/$s").add(item) }
|
||||
MRegistry.INDUSTRIAL_GLASS_PANE.forEachItem { s, _, item -> tagsProvider.items.forge("hardened_glass_panes/$s").add(item) }
|
||||
|
||||
tagsProvider.blocks.forge("hardened_glass").add(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||
tagsProvider.blocks.forge("hardened_glass/colorless").add(MRegistry.INDUSTRIAL_GLASS.block)
|
||||
tagsProvider.blocks.forge("hardened_glass/tinted").add(MRegistry.INDUSTRIAL_GLASS.blocks.values)
|
||||
|
||||
tagsProvider.blocks.forge("hardened_glass_panes").add(MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks.values)
|
||||
tagsProvider.blocks.forge("hardened_glass_panes/colorless").add(MRegistry.INDUSTRIAL_GLASS_PANE.block)
|
||||
tagsProvider.blocks.forge("hardened_glass_panes/tinted").add(MRegistry.INDUSTRIAL_GLASS_PANE.blocks.values)
|
||||
|
||||
MRegistry.INDUSTRIAL_GLASS.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass/$s").add(block) }
|
||||
MRegistry.INDUSTRIAL_GLASS_PANE.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass_panes/$s").add(block) }
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
||||
tagsProvider.blocks.Appender(MBlockTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||
tagsProvider.blocks.Appender(MBlockTags.CARGO_CRATES).add(MRegistry.CARGO_CRATES.allBlocks.values)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.DOORS).add(MItems.TRITANIUM_DOOR.values)
|
||||
tagsProvider.blocks.Appender(BlockTags.DOORS).add(MBlocks.TRITANIUM_DOOR.values)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.TRAPDOORS).add(MItems.TRITANIUM_TRAPDOOR.values)
|
||||
tagsProvider.blocks.Appender(BlockTags.TRAPDOORS).add(MBlocks.TRITANIUM_TRAPDOOR.values)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.PRESSURE_PLATES).add(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.MACHINES).add(MItems.MACHINES)
|
||||
tagsProvider.blocks.Appender(MBlockTags.MACHINES).add(MItems.MACHINES.stream().map { it!!.block })
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.ANVIL).add(MBlocks.TRITANIUM_ANVIL)
|
||||
tagsProvider.items.Appender(ItemTags.ANVIL).add(MItems.TRITANIUM_ANVIL)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.TRITANIUM_NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
||||
tagsProvider.items.Appender(MItemTags.NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
||||
|
||||
tagsProvider.items.Appender(Tags.Items.ARMORS_HELMETS)
|
||||
.add(MItems.TRITANIUM_HELMET, MItems.SIMPLE_TRITANIUM_HELMET)
|
||||
tagsProvider.items.Appender(Tags.Items.ARMORS_CHESTPLATES)
|
||||
.add(MItems.TRITANIUM_CHESTPLATE, MItems.SIMPLE_TRITANIUM_CHESTPLATE, MItems.PORTABLE_GRAVITATION_STABILIZER)
|
||||
tagsProvider.items.Appender(Tags.Items.ARMORS_LEGGINGS)
|
||||
.add(MItems.TRITANIUM_PANTS, MItems.SIMPLE_TRITANIUM_PANTS)
|
||||
tagsProvider.items.Appender(Tags.Items.ARMORS_BOOTS)
|
||||
.add(MItems.TRITANIUM_BOOTS, MItems.SIMPLE_TRITANIUM_BOOTS)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.FREEZE_IMMUNE_WEARABLES).add(MItems.TRITANIUM_ARMOR)
|
||||
|
||||
tagsProvider.items.Appender(Tags.Items.SHEARS).add(MItems.TRITANIUM_SHEARS)
|
||||
tagsProvider.items.Appender(Tags.Items.TOOLS_SHIELDS).add(MItems.TRITANIUM_SHIELD)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.TOOLS_HAMMERS).add(MItems.EXPLOSIVE_HAMMER)
|
||||
tagsProvider.items.forge("tools").add(MItemTags.TOOLS_HAMMERS)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.UPGRADES)
|
||||
.add(MItems.MachineUpgrades.Basic.LIST)
|
||||
@ -47,24 +139,143 @@ fun addTags(tagsProvider: TagsProvider) {
|
||||
.add(MItems.MachineUpgrades.Advanced.LIST)
|
||||
.add(MItems.MachineUpgrades.Creative.LIST)
|
||||
|
||||
tagsProvider.items.Appender(MItemTags.NO_REPLICATION)
|
||||
.add(MItemTags.DILITHIUM_GEMS)
|
||||
.add(MItemTags.DILITHIUM_ORES)
|
||||
.add(Items.WRITTEN_BOOK)
|
||||
.add(Tags.Items.ORES)
|
||||
.add(Tags.Items.RAW_MATERIALS)
|
||||
.add(MItems.PILL_ANDROID)
|
||||
.add(MItems.PILL_HUMANE)
|
||||
.add(MItems.PILL_OBLIVION)
|
||||
.add(MItems.QUANTUM_BATTERY)
|
||||
.add(MItems.QUANTUM_CAPACITOR)
|
||||
.add(MItems.QUANTUM_BATTERY_CREATIVE)
|
||||
.add(MItems.ZPM_BATTERY)
|
||||
.add(MItems.PROCEDURAL_BATTERY)
|
||||
.add(MItems.EXOPACK_PROBE)
|
||||
.add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL)
|
||||
.add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER)
|
||||
.add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON)
|
||||
tagsProvider.blocks.Appender(BlockTags.STAIRS)
|
||||
.add(MRegistry.FLOOR_TILES_STAIRS.blocks.values)
|
||||
.add(MRegistry.TRITANIUM_STAIRS.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks)
|
||||
.add(MBlocks.TRITANIUM_STRIPED_STAIRS)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.SLABS)
|
||||
.add(MRegistry.TRITANIUM_SLAB.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks)
|
||||
.add(MRegistry.FLOOR_TILES_SLAB.blocks.values)
|
||||
.add(MBlocks.TRITANIUM_STRIPED_SLAB)
|
||||
|
||||
tagsProvider.blocks.Appender(BlockTags.WALLS)
|
||||
.add(MRegistry.TRITANIUM_WALL.allBlocks.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks)
|
||||
.add(MBlocks.TRITANIUM_STRIPED_WALL)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.STAIRS)
|
||||
.add(MRegistry.FLOOR_TILES_STAIRS.items.values)
|
||||
.add(MRegistry.TRITANIUM_STAIRS.allItems.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_STAIRS.flatItems)
|
||||
.add(MItems.TRITANIUM_STRIPED_STAIRS)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.SLABS)
|
||||
.add(MRegistry.TRITANIUM_SLAB.allItems.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatItems)
|
||||
.add(MRegistry.FLOOR_TILES_SLAB.items.values)
|
||||
.add(MItems.TRITANIUM_STRIPED_SLAB)
|
||||
|
||||
tagsProvider.items.Appender(ItemTags.WALLS)
|
||||
.add(MRegistry.TRITANIUM_WALL.allItems.values)
|
||||
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatItems)
|
||||
.add(MItems.TRITANIUM_STRIPED_WALL)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_DOOR.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_TRAPDOOR.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.PAINTER, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MBlocks.ENERGY_CABLES.values, Tiers.STONE)
|
||||
|
||||
tagsProvider.requiresPickaxe(listOf<Block>(
|
||||
*MBlocks.ANDROID_STATION.values.toTypedArray(),
|
||||
*MBlocks.BATTERY_BANK.values.toTypedArray(),
|
||||
*MBlocks.MATTER_DECOMPOSER.values.toTypedArray(),
|
||||
*MBlocks.MATTER_CAPACITOR_BANK.values.toTypedArray(),
|
||||
MBlocks.PATTERN_STORAGE,
|
||||
*MBlocks.MATTER_SCANNER.values.toTypedArray(),
|
||||
*MBlocks.MATTER_PANEL.values.toTypedArray(),
|
||||
*MBlocks.MATTER_REPLICATOR.values.toTypedArray(),
|
||||
*MBlocks.MATTER_BOTTLER.values.toTypedArray(),
|
||||
*MBlocks.ENERGY_COUNTER.values.toTypedArray(),
|
||||
*MBlocks.CHEMICAL_GENERATOR.values.toTypedArray(),
|
||||
*MBlocks.PLATE_PRESS.values.toTypedArray(),
|
||||
*MBlocks.TWIN_PLATE_PRESS.values.toTypedArray(),
|
||||
*MBlocks.MATTER_RECYCLER.values.toTypedArray(),
|
||||
MBlocks.MATTER_ENTANGLER,
|
||||
|
||||
*MBlocks.POWERED_FURNACE.values.toTypedArray(),
|
||||
*MBlocks.POWERED_SMOKER.values.toTypedArray(),
|
||||
*MBlocks.POWERED_BLAST_FURNACE.values.toTypedArray(),
|
||||
|
||||
MBlocks.STORAGE_BUS,
|
||||
MBlocks.STORAGE_IMPORTER,
|
||||
MBlocks.STORAGE_EXPORTER,
|
||||
|
||||
*MBlocks.DRIVE_VIEWER.values.toTypedArray(),
|
||||
MBlocks.DRIVE_RACK,
|
||||
*MBlocks.ITEM_MONITOR.values.toTypedArray(),
|
||||
*MBlocks.STORAGE_POWER_SUPPLIER.values.toTypedArray(),
|
||||
|
||||
MBlocks.PHANTOM_ATTRACTOR,
|
||||
*MBlocks.ENERGY_SERVO.values.toTypedArray(),
|
||||
|
||||
MBlocks.TRITANIUM_INGOT_BLOCK,
|
||||
MBlocks.METAL_JUNK,
|
||||
MBlocks.METAL_MESH,
|
||||
MBlocks.TRITANIUM_BARS,
|
||||
|
||||
MBlocks.ENGINE,
|
||||
MBlocks.HOLO_SIGN,
|
||||
*MBlocks.COBBLESTONE_GENERATOR.values.toTypedArray(),
|
||||
*MBlocks.ESSENCE_STORAGE.values.toTypedArray(),
|
||||
*MBlocks.MATTER_RECONSTRUCTOR.values.toTypedArray(),
|
||||
MBlocks.FLUID_TANK,
|
||||
*MBlocks.ANDROID_CHARGER.values.toTypedArray(),
|
||||
|
||||
MBlocks.BLACK_HOLE_GENERATOR,
|
||||
MBlocks.ITEM_INPUT_HATCH,
|
||||
MBlocks.ITEM_OUTPUT_HATCH,
|
||||
), Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ANVIL, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ORE, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.DEEPSLATE_TRITANIUM_ORE, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_RAW_BLOCK, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_BLOCK, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_STAIRS, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_WALL, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_SLAB, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.CARBON_FIBRE_BLOCK, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.INFINITE_WATER_SOURCE, Tiers.STONE)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.CARGO_CRATES.allBlocks.values, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.VENT.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.VENT_ALTERNATIVE.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_BLOCK.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.COMPUTER_TERMINAL.allBlocks.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_SLAB.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_WALL.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STAIRS.allBlocks.values, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_BLOCK.flatBlocks, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks, Tiers.IRON)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES.blocks.values)
|
||||
tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES_STAIRS.blocks.values)
|
||||
tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES_SLAB.blocks.values)
|
||||
tagsProvider.requiresShovel(MRegistry.UNREFINED_FLOOR_TILES.blocks.values)
|
||||
|
||||
tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS.allBlocks.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks.values, Tiers.STONE)
|
||||
tagsProvider.requiresPickaxe(MRegistry.DECORATIVE_CRATE.allBlocks.values, Tiers.STONE)
|
||||
|
||||
tagsProvider.requiresPickaxe(MBlocks.LABORATORY_LAMP, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.LABORATORY_LAMP_INVERTED, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.METAL_BEAM, Tiers.IRON)
|
||||
tagsProvider.requiresPickaxe(MBlocks.DANGER_STRIPE_BLOCK)
|
||||
|
||||
tagsProvider.requiresPickaxe(listOf(
|
||||
MBlocks.GRAVITATION_STABILIZER,
|
||||
MBlocks.GRAVITATION_STABILIZER_LENS,
|
||||
), Tiers.DIAMOND)
|
||||
|
||||
tagsProvider.dragonImmune.add(
|
||||
MBlocks.BLACK_HOLE,
|
||||
|
@ -1,41 +1,25 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.tags
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
||||
import net.minecraft.core.Holder
|
||||
import net.minecraft.core.HolderLookup
|
||||
import net.minecraft.core.Registry
|
||||
import net.minecraft.core.registries.BuiltInRegistries
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.tags.BlockTags
|
||||
import net.minecraft.tags.GameEventTags
|
||||
import net.minecraft.tags.TagKey
|
||||
import net.minecraft.world.item.DyeColor
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.Tier
|
||||
import net.minecraft.world.item.Tiers
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.neoforged.neoforge.common.Tags
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import net.neoforged.neoforge.registries.NeoForgeRegistries
|
||||
import ru.dbotthepony.mc.otm.player.MatteryPlayer
|
||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||
import net.minecraftforge.common.Tags
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import java.util.EnumMap
|
||||
import java.util.stream.Stream
|
||||
import net.minecraft.data.tags.TagsProvider as MinecraftTagsProvider
|
||||
|
||||
private fun <T : Any> vanillaLookup(key: ResourceKey<Registry<T>>): (T) -> ResourceLocation {
|
||||
val registry by lazy { (BuiltInRegistries.REGISTRY.get(key.location()) ?: throw NoSuchElementException("No such registry $key")) as Registry<T> }
|
||||
return { registry.getKey(it) ?: throw NoSuchElementException("Registry $key does not contain $it") }
|
||||
}
|
||||
|
||||
class TagsProvider(private val event: GatherDataEvent) {
|
||||
inner class Delegate<T : Any> private constructor(key: ResourceKey<Registry<T>>, val lookup: (T) -> ResourceLocation) : MinecraftTagsProvider<T>(event.generator.packOutput, key, event.lookupProvider, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
constructor(registry: Registry<T>) : this(registry.key() as ResourceKey<Registry<T>>, { registry.getKey(it) ?: throw NoSuchElementException("$it is not registered in $registry") })
|
||||
constructor(key: ResourceKey<Registry<T>>) : this(key, vanillaLookup(key))
|
||||
|
||||
inner class Delegate<T : Any>(key: Registry<T>) : MinecraftTagsProvider<T>(event.generator, key, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
init {
|
||||
if (isRegistered)
|
||||
event.generator.addProvider(event.includeServer(), this)
|
||||
@ -48,10 +32,10 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
private val tagInTag = HashMap<TagKey<T>, ObjectArraySet<TagKey<T>>>()
|
||||
|
||||
inner class Appender(val tag: TagKey<T>) {
|
||||
constructor(tag: ResourceLocation) : this(TagKey.create(registryKey, tag))
|
||||
constructor(tag: ResourceLocation) : this(TagKey.create(registry.key(), tag))
|
||||
|
||||
init {
|
||||
require(tag.registry == registryKey) { "Trying to create appender for $tag inside registry $registryKey" }
|
||||
require(tag.registry == registry.key()) { "Trying to create appender for $tag inside registry ${registry.key()}" }
|
||||
}
|
||||
|
||||
private val locations by lazy { tags.computeIfAbsent(tag) { ObjectArraySet() } }
|
||||
@ -59,25 +43,25 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
private val tagsInTags by lazy { tagInTag.computeIfAbsent(tag) { ObjectArraySet() } }
|
||||
|
||||
fun add(value: ResourceLocation): Appender {
|
||||
check(locations.add(value)) { "Tag ${tag.location} of registry ${registryKey.location()} already contains $value" }
|
||||
check(locations.add(value)) { "Tag ${tag.location} of registry ${registry.key().location()} already contains $value" }
|
||||
return this
|
||||
}
|
||||
|
||||
fun add(value: ResourceKey<T>): Appender {
|
||||
require(value.registry() == registryKey.location()) { "Invalid registry in provided ResourceKey: ${value.registry()} (this tag appender is for ${registryKey.location()})" }
|
||||
require(value.registry() == registry.key().location()) { "Invalid registry in provided ResourceKey: ${value.registry()} (this tag appender is for ${registry.key().location()})" }
|
||||
// check(rigidLocations.add(value)) { "Tag ${tag.location} of registry ${registryKey.location()} already contains $value" }
|
||||
// return this
|
||||
return add(value.location())
|
||||
}
|
||||
|
||||
fun add(value: TagKey<T>): Appender {
|
||||
require(value.registry() == registryKey) { "Invalid registry in provided ResourceKey: ${value.registry().location()} (this tag appender is for ${registryKey.location()})" }
|
||||
check(tagsInTags.add(value)) { "Tag ${tag.location} of registry ${registryKey.location()} already contains $value" }
|
||||
require(value.registry() == registry.key()) { "Invalid registry in provided ResourceKey: ${value.registry().location()} (this tag appender is for ${registry.key().location()})" }
|
||||
check(tagsInTags.add(value)) { "Tag ${tag.location} of registry ${registry.key().location()} already contains $value" }
|
||||
return this
|
||||
}
|
||||
|
||||
fun add(value: T): Appender {
|
||||
return add(ResourceKey.create(registryKey, lookup.invoke(value)))
|
||||
return add(ResourceKey.create(registry.key(), registry.getKey(value)!!))
|
||||
}
|
||||
|
||||
fun add(values: Collection<T>): Appender {
|
||||
@ -95,11 +79,6 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
return this
|
||||
}
|
||||
|
||||
fun add(vararg values: Holder<T>): Appender {
|
||||
for (value in values) add(value.key ?: throw IllegalArgumentException("Intrusive holder"))
|
||||
return this
|
||||
}
|
||||
|
||||
fun add(vararg values: TagKey<T>): Appender {
|
||||
for (value in values) add(value)
|
||||
return this
|
||||
@ -115,11 +94,6 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
return this
|
||||
}
|
||||
|
||||
fun add(values: Iterator<T>): Appender {
|
||||
values.forEach { add(it) }
|
||||
return this
|
||||
}
|
||||
|
||||
fun leaf(name: String) = Appender(TagKey.create(tag.registry, ResourceLocation(tag.location.namespace, tag.location.path + "/$name")))
|
||||
|
||||
fun add(leaf: String, value: T) = also { leaf(leaf).add(value) }
|
||||
@ -133,10 +107,10 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
fun add(leaf: String, vararg value: ResourceLocation) = also { leaf(leaf).add(*value) }
|
||||
}
|
||||
|
||||
fun forge(path: String) = Appender(ResourceLocation("c", path))
|
||||
fun forge(path: String) = Appender(ResourceLocation("forge", path))
|
||||
fun minecraft(path: String) = Appender(ResourceLocation("minecraft", path))
|
||||
|
||||
override fun addTags(provider: HolderLookup.Provider) {
|
||||
override fun addTags() {
|
||||
for ((tag, values) in tags) {
|
||||
val appender = tag(tag)
|
||||
|
||||
@ -157,7 +131,7 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
val appender = tag(tag)
|
||||
|
||||
for (value in values) {
|
||||
appender.addOptionalTag(value)
|
||||
appender.addTag(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -178,32 +152,14 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
}
|
||||
}
|
||||
|
||||
val blocks = Delegate(BuiltInRegistries.BLOCK)
|
||||
val items = Delegate(BuiltInRegistries.ITEM)
|
||||
val fluids = Delegate(BuiltInRegistries.FLUID)
|
||||
val fluidTypes = Delegate(NeoForgeRegistries.Keys.FLUID_TYPES)
|
||||
val mobEffects = Delegate(BuiltInRegistries.MOB_EFFECT)
|
||||
val entityTypes = Delegate(BuiltInRegistries.ENTITY_TYPE)
|
||||
val damageTypes = Delegate(Registries.DAMAGE_TYPE)
|
||||
val structures = Delegate(Registries.STRUCTURE)
|
||||
val blocks = Delegate(Registry.BLOCK)
|
||||
val items = Delegate(Registry.ITEM)
|
||||
// not supported on 1.19.4 and earlier
|
||||
// val fluids = Delegate(ForgeRegistries.FLUIDS)
|
||||
// val fluidTypes = Delegate(ForgeRegistries.Keys.FLUID_TYPES)
|
||||
val mobEffects = Delegate(Registry.MOB_EFFECT)
|
||||
|
||||
private val coloredItems = EnumMap<DyeColor, Delegate<Item>.Appender>(DyeColor::class.java)
|
||||
|
||||
init {
|
||||
DyeColor.entries.forEach {
|
||||
coloredItems[it] = items.Appender(it.dyedTag)
|
||||
}
|
||||
}
|
||||
|
||||
fun addToDyeTags(values: Map<out DyeColor?, Item>) {
|
||||
for ((c, it) in values) {
|
||||
if (c != null) {
|
||||
coloredItems[c]!!.add(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val androidImmuneEffects = mobEffects.Appender(MatteryPlayer.ANDROID_IMMUNE_EFFECTS)
|
||||
val androidImmuneEffects = mobEffects.Appender(MatteryPlayerCapability.ANDROID_IMMUNE_EFFECTS)
|
||||
|
||||
val requiresShovel = blocks.Appender(BlockTags.MINEABLE_WITH_SHOVEL)
|
||||
val requiresAxe = blocks.Appender(BlockTags.MINEABLE_WITH_AXE)
|
||||
@ -246,19 +202,10 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
return this
|
||||
}
|
||||
|
||||
fun denseDropOre(vararg blocks: Block): TagsProvider {
|
||||
for (block in blocks) {
|
||||
itemOreRatesSingular.add(block.asItem())
|
||||
blockOreRatesSingular.add(block)
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
fun ore(key: String, block: Block): TagsProvider {
|
||||
val forgeKey = ResourceLocation("c", "ores/$key")
|
||||
val b = TagKey.create(Registries.BLOCK, forgeKey)
|
||||
val i = TagKey.create(Registries.ITEM, forgeKey)
|
||||
val forgeKey = ResourceLocation("forge", "ores/$key")
|
||||
val b = TagKey.create(Registry.BLOCK_REGISTRY, forgeKey)
|
||||
val i = TagKey.create(Registry.ITEM_REGISTRY, forgeKey)
|
||||
|
||||
items.Appender(i).add(block.asItem())
|
||||
itemOres.add(block.asItem())
|
||||
@ -291,7 +238,6 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
val dusts = items.Appender(Tags.Items.DUSTS)
|
||||
val ingots = items.Appender(Tags.Items.INGOTS)
|
||||
val itemOres = items.Appender(Tags.Items.ORES)
|
||||
val gems = items.Appender(Tags.Items.GEMS)
|
||||
val blockOres = blocks.Appender(Tags.Blocks.ORES)
|
||||
val plates = items.forge("plates")
|
||||
val storageBlocksAsItem = items.Appender(Tags.Items.STORAGE_BLOCKS)
|
||||
@ -308,12 +254,12 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
|
||||
// val blockOreRatesSparse = blocks.forge("ore_rates/sparse")
|
||||
val blockOreRatesSingular = blocks.Appender(Tags.Blocks.ORE_RATES_SINGULAR)
|
||||
val blockOreRatesDense = blocks.forge("ore_rates/dense")
|
||||
// val blockOreRatesDense = blocks.forge("ore_rates/dense")
|
||||
// val itemOreRatesSparse = items.forge("ore_rates/sparse")
|
||||
val itemOreRatesSingular = items.Appender(Tags.Items.ORE_RATES_SINGULAR)
|
||||
val itemOreRatesDense = items.forge("ore_rates/dense")
|
||||
// val itemOreRatesDense = items.forge("ore_rates/dense")
|
||||
|
||||
val gameEvents = Delegate(Registries.GAME_EVENT)
|
||||
val gameEvents = Delegate(Registry.GAME_EVENT)
|
||||
val vibrations = gameEvents.Appender(GameEventTags.VIBRATIONS)
|
||||
|
||||
fun requiresPickaxe(block: Block, tier: Tier? = null): TagsProvider {
|
||||
@ -333,16 +279,6 @@ class TagsProvider(private val event: GatherDataEvent) {
|
||||
return this
|
||||
}
|
||||
|
||||
fun requiresPickaxe(blocks: Stream<Block>, tier: Tier? = null): TagsProvider {
|
||||
for (block in blocks) requiresPickaxe(block, tier)
|
||||
return this
|
||||
}
|
||||
|
||||
fun requiresPickaxe(blocks: Iterator<Block>, tier: Tier? = null): TagsProvider {
|
||||
for (block in blocks) requiresPickaxe(block, tier)
|
||||
return this
|
||||
}
|
||||
|
||||
fun requiresPickaxe(vararg blocks: Block, tier: Tier? = null): TagsProvider {
|
||||
for (block in blocks) requiresPickaxe(block, tier)
|
||||
return this
|
||||
|
288
src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java
Normal file
288
src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java
Normal file
@ -0,0 +1,288 @@
|
||||
package ru.dbotthepony.mc.otm;
|
||||
|
||||
import kotlin.KotlinVersion;
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.eventbus.api.EventPriority;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.registries.IdMappingEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchManager;
|
||||
import ru.dbotthepony.mc.otm.android.feature.EnderTeleporterFeature;
|
||||
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity;
|
||||
import ru.dbotthepony.mc.otm.block.entity.blackhole.ExplosionQueue;
|
||||
import ru.dbotthepony.mc.otm.block.entity.decorative.DevChestBlockEntity;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability;
|
||||
import ru.dbotthepony.mc.otm.capability.drive.DrivePool;
|
||||
import ru.dbotthepony.mc.otm.client.AndroidAbilityKeyMapping;
|
||||
import ru.dbotthepony.mc.otm.client.AndroidMenuKeyMapping;
|
||||
import ru.dbotthepony.mc.otm.client.ClientEventHandlerKt;
|
||||
import ru.dbotthepony.mc.otm.client.ClientTickHandlerKt;
|
||||
import ru.dbotthepony.mc.otm.client.MatteryGUI;
|
||||
import ru.dbotthepony.mc.otm.client.model.ExosuitModel;
|
||||
import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel;
|
||||
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel;
|
||||
import ru.dbotthepony.mc.otm.client.render.ShockwaveRenderer;
|
||||
import ru.dbotthepony.mc.otm.client.render.blockentity.BatteryBankRenderer;
|
||||
import ru.dbotthepony.mc.otm.client.render.blockentity.MatterBatteryBankRenderer;
|
||||
import ru.dbotthepony.mc.otm.compat.adastra.AdAstraCompatKt;
|
||||
import ru.dbotthepony.mc.otm.compat.curios.CuriosCompatKt;
|
||||
import ru.dbotthepony.mc.otm.config.AndroidConfig;
|
||||
import ru.dbotthepony.mc.otm.config.CablesConfig;
|
||||
import ru.dbotthepony.mc.otm.config.ClientConfig;
|
||||
import ru.dbotthepony.mc.otm.config.ExopackConfig;
|
||||
import ru.dbotthepony.mc.otm.config.ItemsConfig;
|
||||
import ru.dbotthepony.mc.otm.config.MachinesConfig;
|
||||
import ru.dbotthepony.mc.otm.config.ServerCompatConfig;
|
||||
import ru.dbotthepony.mc.otm.config.ServerConfig;
|
||||
import ru.dbotthepony.mc.otm.config.ToolsConfig;
|
||||
import ru.dbotthepony.mc.otm.item.ChestUpgraderItem;
|
||||
import ru.dbotthepony.mc.otm.item.tool.ExplosiveHammerItem;
|
||||
import ru.dbotthepony.mc.otm.item.armor.TritaniumArmorItem;
|
||||
import ru.dbotthepony.mc.otm.item.QuantumBatteryItem;
|
||||
import ru.dbotthepony.mc.otm.item.weapon.AbstractWeaponItem;
|
||||
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem;
|
||||
import ru.dbotthepony.mc.otm.matter.MatterManager;
|
||||
import ru.dbotthepony.mc.otm.network.*;
|
||||
import ru.dbotthepony.mc.otm.registry.*;
|
||||
import ru.dbotthepony.mc.otm.triggers.KillAsAndroidTrigger;
|
||||
import top.theillusivec4.curios.api.CuriosApi;
|
||||
|
||||
import static net.minecraftforge.common.MinecraftForge.EVENT_BUS;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
// The value here should match an entry in the META-INF/mods.toml file
|
||||
@Mod(OverdriveThatMatters.MOD_ID)
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
public final class OverdriveThatMatters {
|
||||
// Directly reference a log4j logger.
|
||||
public static final String MOD_ID = "overdrive_that_matters";
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
public static final AtomicInteger INGREDIENT_CACHE_INVALIDATION_COUNTER;
|
||||
|
||||
static {
|
||||
try {
|
||||
var f = Ingredient.class.getDeclaredField("INVALIDATION_COUNTER");
|
||||
f.setAccessible(true);
|
||||
INGREDIENT_CACHE_INVALIDATION_COUNTER = (AtomicInteger) f.get(null);
|
||||
} catch (IllegalAccessException | NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public final CreativeModeTab CREATIVE_TAB = new CreativeModeTab("otm") {
|
||||
@Override
|
||||
public ItemStack makeIcon() {
|
||||
return new ItemStack(MItems.INSTANCE.getBATTERY_CREATIVE(), 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillItemList(NonNullList<ItemStack> p_40778_) {
|
||||
MCreativeTabsKt.getMainTabContents().fillIn(p_40778_);
|
||||
}
|
||||
};
|
||||
|
||||
public final CreativeModeTab CREATIVE_TAB_DECORATIVE = new CreativeModeTab("otm_decorative") {
|
||||
@Override
|
||||
public ItemStack makeIcon() {
|
||||
return new ItemStack(MRegistry.INSTANCE.getVENT().getItem(), 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillItemList(NonNullList<ItemStack> p_40778_) {
|
||||
MCreativeTabsKt.getDecorativeTabContents().fillIn(p_40778_);
|
||||
}
|
||||
};
|
||||
|
||||
public static OverdriveThatMatters INSTANCE;
|
||||
public static ResourceLocation loc(String path) {
|
||||
return new ResourceLocation(MOD_ID, path);
|
||||
}
|
||||
|
||||
private static void checkIfKotlinIsInstalled() {
|
||||
if (!KotlinVersion.CURRENT.isAtLeast(1, 8, 0)) {
|
||||
throw new UnsupportedClassVersionError("Installed kotlin version is " + KotlinVersion.CURRENT + ", when at least 1.8.0 is required.");
|
||||
}
|
||||
}
|
||||
|
||||
public OverdriveThatMatters() {
|
||||
if (INSTANCE != null) {
|
||||
throw new IllegalStateException("yo what the fuck");
|
||||
}
|
||||
|
||||
try {
|
||||
checkIfKotlinIsInstalled();
|
||||
} catch (Throwable err) {
|
||||
if (err instanceof NoClassDefFoundError) {
|
||||
for (int i = 0; i < 16; i++)
|
||||
LOGGER.fatal("Overdrive That Matters requires Kotlin to be installed, get Kotlin for Forge from https://github.com/thedarkcolour/KotlinForForge");
|
||||
|
||||
LOGGER.fatal("Overdrive That Matters requires Kotlin to be installed, get Kotlin for Forge from https://github.com/thedarkcolour/KotlinForForge", err);
|
||||
throw new RuntimeException("Overdrive That Matters requires Kotlin to be installed, get Kotlin for Forge from https://github.com/thedarkcolour/KotlinForForge");
|
||||
}
|
||||
|
||||
for (int i = 0; i < 16; i++)
|
||||
LOGGER.fatal("Overdrive That Matters' Kotlin version is not satisfied, get newer Kotlin for Forge from https://github.com/thedarkcolour/KotlinForForge");
|
||||
|
||||
LOGGER.fatal("Overdrive That Matters' Kotlin version is not satisfied, get newer Kotlin for Forge from https://github.com/thedarkcolour/KotlinForForge", err);
|
||||
|
||||
throw err;
|
||||
}
|
||||
|
||||
INSTANCE = this;
|
||||
|
||||
var modBus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||
|
||||
MRegistry.INSTANCE.initialize(modBus);
|
||||
MatterManager.INSTANCE.initialize(modBus);
|
||||
|
||||
modBus.addListener(EventPriority.HIGHEST, this::setup);
|
||||
modBus.addListener(EventPriority.NORMAL, this::setupClient);
|
||||
modBus.addListener(EventPriority.NORMAL, MatteryCapability::register);
|
||||
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
|
||||
modBus.addListener(EventPriority.NORMAL, AndroidMenuKeyMapping.INSTANCE::register);
|
||||
modBus.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::register);
|
||||
modBus.addListener(EventPriority.NORMAL, TritaniumArmorModel::register);
|
||||
modBus.addListener(EventPriority.NORMAL, GravitationStabilizerModel::register);
|
||||
|
||||
modBus.addListener(EventPriority.NORMAL, BatteryBankRenderer.Companion::onRegisterAdditionalModels);
|
||||
modBus.addListener(EventPriority.NORMAL, MatterBatteryBankRenderer.Companion::onRegisterAdditionalModels);
|
||||
});
|
||||
|
||||
ClientConfig.INSTANCE.register();
|
||||
ServerConfig.INSTANCE.register();
|
||||
CablesConfig.INSTANCE.register();
|
||||
ServerCompatConfig.INSTANCE.register();
|
||||
AndroidConfig.INSTANCE.register();
|
||||
ExopackConfig.INSTANCE.register();
|
||||
ItemsConfig.INSTANCE.register();
|
||||
MachinesConfig.INSTANCE.register();
|
||||
ToolsConfig.INSTANCE.register();
|
||||
}
|
||||
|
||||
private void setup(final FMLCommonSetupEvent event) {
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, DrivePool.INSTANCE::onWorldSave);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.HIGHEST, GlobalEventHandlerKt::onServerStopped);
|
||||
EVENT_BUS.addListener(EventPriority.HIGHEST, GlobalEventHandlerKt::onServerStopping);
|
||||
EVENT_BUS.addListener(EventPriority.HIGHEST, GlobalEventHandlerKt::onServerStarting);
|
||||
EVENT_BUS.addListener(EventPriority.LOWEST, GlobalEventHandlerKt::onLevelTick);
|
||||
EVENT_BUS.addListener(EventPriority.LOWEST, GlobalEventHandlerKt::onServerTick);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onPlayerTick);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::isMobEffectApplicable);
|
||||
EVENT_BUS.addListener(EventPriority.LOW, MatteryPlayerCapability.Companion::onHurtEvent);
|
||||
EVENT_BUS.addListener(EventPriority.HIGH, MatteryPlayerCapability.Companion::onAttackEvent);
|
||||
EVENT_BUS.addGenericListener(Entity.class, EventPriority.NORMAL, MatteryPlayerCapability.Companion::onAttachCapabilityEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onPlayerChangeDimensionEvent);
|
||||
EVENT_BUS.addListener(EventPriority.LOWEST, MatteryPlayerCapability.Companion::onPlayerDeath);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onPlayerCloneEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onStartTracking);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onStopTracking);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::addCommands);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MCreativeTabsKt::invalidateCreativeMenus);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ExplosionQueue.Companion::onWorldTick);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::tick);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, QuantumBatteryItem.Companion::tick);
|
||||
EVENT_BUS.addListener(EventPriority.LOWEST, PortableCondensationDriveItem.Companion::onPickupEvent);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidResearchManager.INSTANCE::reloadEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidResearchManager.INSTANCE::syncEvent);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatterManager.INSTANCE::reloadEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatterManager.INSTANCE::onServerStarted);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatterManager.INSTANCE::onDataPackSync);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatterManager.INSTANCE::addCommands);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryBlockEntity.Companion::onServerStopping);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryBlockEntity.Companion::onLevelUnload);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryBlockEntity.Companion::onWatch);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryBlockEntity.Companion::onForget);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryBlockEntity.Companion::playerDisconnected);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.LOWEST, KillAsAndroidTrigger.INSTANCE::onKill);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, EnderTeleporterFeature.Companion::onEntityDeath);
|
||||
EVENT_BUS.addListener(EventPriority.HIGH, TritaniumArmorItem.Companion::onHurt);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ExplosiveHammerItem.Companion::onLeftClickBlock);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ChestUpgraderItem.Companion::onEntityInteract);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, DevChestBlockEntity.Companion::mappingsChanged);
|
||||
|
||||
MatteryPlayerNetworkChannel.INSTANCE.register();
|
||||
MenuNetworkChannel.INSTANCE.register();
|
||||
WeaponNetworkChannel.INSTANCE.register();
|
||||
GenericNetworkChannel.INSTANCE.register();
|
||||
|
||||
if (ModList.get().isLoaded(CuriosApi.MODID)) {
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, CuriosCompatKt::onCuriosSlotModifiersUpdated);
|
||||
}
|
||||
|
||||
if (AdAstraCompatKt.isAdAstraLoaded()) {
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AdAstraCompatKt::onDamageEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AdAstraCompatKt::onMatteryTick);
|
||||
}
|
||||
}
|
||||
|
||||
private void setupClient(final FMLClientSetupEvent event) {
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatterManager.INSTANCE::tooltipEvent);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::playerRenderHook);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::fovHook);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::clickHook);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::renderViewModel);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryGUI.INSTANCE::onScreenRender);
|
||||
EVENT_BUS.addListener(EventPriority.LOWEST, MatteryGUI.INSTANCE::onOpenGUIEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryGUI.INSTANCE::onRenderGuiEvent);
|
||||
EVENT_BUS.addListener(EventPriority.HIGH, MatteryGUI.INSTANCE::onLayerRenderEvent);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ShockwaveRenderer.INSTANCE::onRender);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandlerKt::onMovementInputUpdate);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandlerKt::onScreenOpen);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandlerKt::onPostScreenInit);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandlerKt::onMouseDragged);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandlerKt::onMouseScrolled);
|
||||
EVENT_BUS.addListener(EventPriority.LOWEST, ClientTickHandlerKt::onClientTick);
|
||||
EVENT_BUS.addListener(EventPriority.HIGHEST, ClientTickHandlerKt::onClientConnected);
|
||||
EVENT_BUS.addListener(EventPriority.HIGHEST, ClientTickHandlerKt::onClientDisconnected);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ClientTickHandlerKt::onClientPostRender);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandlerKt::tooltipEvent);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, QuantumBatteryItem.Companion::clientDisconnect);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidMenuKeyMapping.INSTANCE::onRenderGuiEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidMenuKeyMapping.INSTANCE::onMouseClick);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderGuiEvent);
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderLevel);
|
||||
|
||||
EVENT_BUS.addListener(EventPriority.NORMAL, ExosuitModel::onPlayerRendered);
|
||||
|
||||
event.enqueueWork(GlobalEventHandlerKt::recordClientThread);
|
||||
event.enqueueWork(ClientTickHandlerKt::createCursors);
|
||||
}
|
||||
}
|
@ -1,12 +1,10 @@
|
||||
package ru.dbotthepony.mc.otm.capability;
|
||||
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.neoforged.neoforge.capabilities.BlockCapability;
|
||||
import net.neoforged.neoforge.capabilities.ItemCapability;
|
||||
import net.minecraftforge.common.capabilities.CapabilityManager;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.CapabilityToken;
|
||||
import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||
import ru.dbotthepony.mc.otm.block.entity.cable.EnergyCableBlockEntity;
|
||||
import ru.dbotthepony.mc.otm.capability.drive.IMatteryDrive;
|
||||
import ru.dbotthepony.mc.otm.capability.energy.IMatteryEnergyStorage;
|
||||
@ -15,62 +13,69 @@ import ru.dbotthepony.mc.otm.capability.matter.IReplicationTaskProvider;
|
||||
import ru.dbotthepony.mc.otm.capability.matter.IPatternStorage;
|
||||
import ru.dbotthepony.mc.otm.graph.matter.MatterNode;
|
||||
import ru.dbotthepony.mc.otm.graph.storage.StorageNode;
|
||||
import top.theillusivec4.curios.api.type.capability.ICurio;
|
||||
import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class MatteryCapability {
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<IMatteryEnergyStorage, @Nullable Direction> BLOCK_ENERGY = BlockCapability.createSided(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "energy"), IMatteryEnergyStorage.class);
|
||||
public static final Capability<IMatteryEnergyStorage> ENERGY = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final ItemCapability<IMatteryEnergyStorage, Void> ITEM_ENERGY = ItemCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "energy"), IMatteryEnergyStorage.class);
|
||||
public static final Capability<MatteryPlayerCapability> MATTERY_PLAYER = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final ItemCapability<IMatterStorage, Void> MATTER_ITEM = ItemCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "matter"), IMatterStorage.class);
|
||||
public static final Capability<IMatterStorage> MATTER = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<IMatterStorage, @Nullable Direction> MATTER_BLOCK = BlockCapability.createSided(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "matter"), IMatterStorage.class);
|
||||
public static final Capability<MatterNode> MATTER_NODE = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<MatterNode, @Nullable Direction> MATTER_NODE = BlockCapability.createSided(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "matter_node"), MatterNode.class);
|
||||
public static final Capability<IPatternStorage> PATTERN = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final ItemCapability<IPatternStorage, Void> PATTERN_ITEM = ItemCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "pattern"), IPatternStorage.class);
|
||||
public static final Capability<IReplicationTaskProvider> TASK = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<IPatternStorage, @Nullable Direction> PATTERN_BLOCK = BlockCapability.createSided(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "pattern"), IPatternStorage.class);
|
||||
public static final Capability<IMatteryDrive<?>> DRIVE = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<IReplicationTaskProvider, Void> REPLICATION_TASK = BlockCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "replication_task"), IReplicationTaskProvider.class);
|
||||
public static final Capability<StorageNode> STORAGE_NODE = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
// this weird cast is required because otherwise IMatteryDrive gets incompatible lower-bound due to Java raw generic type
|
||||
// and K2 compiler chokes and dies due to it
|
||||
public static final ItemCapability<IMatteryDrive<?>, Void> CONDENSATION_DRIVE = (ItemCapability<IMatteryDrive<?>, Void>) (Object) ItemCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "condensation_drive"), IMatteryDrive.class);
|
||||
public static final Capability<EnergyCableBlockEntity.Node> ENERGY_CABLE_NODE = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<StorageNode, @Nullable Direction> STORAGE_NODE = BlockCapability.createSided(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "storage_node"), StorageNode.class);
|
||||
|
||||
// TODO: remove this
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<EnergyCableBlockEntity.Node, Void> ENERGY_CABLE_NODE = BlockCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "energy_cable_node"), EnergyCableBlockEntity.Node.class);
|
||||
public static final Capability<ICuriosItemHandler> CURIOS_INVENTORY = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final ItemCapability<IMatteryUpgrade, Void> UPGRADE = ItemCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "machine_upgrade"), IMatteryUpgrade.class);
|
||||
public static final Capability<ICurio> CURIOS_ITEM = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
@Nonnull
|
||||
@NotNull
|
||||
public static final BlockCapability<IQuickStackContainer, Void> QUICK_STACK_CONTAINER = BlockCapability.createVoid(ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "quick_stack_container"), IQuickStackContainer.class);
|
||||
public static final Capability<IMatteryUpgrade> UPGRADE = CapabilityManager.get(new CapabilityToken<>() {});
|
||||
|
||||
public static void register(RegisterCapabilitiesEvent event) {
|
||||
event.register(IMatteryEnergyStorage.class);
|
||||
event.register(MatteryPlayerCapability.class);
|
||||
event.register(IMatterStorage.class);
|
||||
event.register(MatterNode.class);
|
||||
event.register(IPatternStorage.class);
|
||||
event.register(IReplicationTaskProvider.class);
|
||||
event.register(IMatteryDrive.class);
|
||||
event.register(StorageNode.class);
|
||||
event.register(IMatteryUpgrade.class);
|
||||
}
|
||||
}
|
||||
|
@ -1,77 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.client.animation;
|
||||
|
||||
import net.minecraft.client.animation.AnimationChannel;
|
||||
import net.minecraft.client.animation.AnimationDefinition;
|
||||
import net.minecraft.client.animation.Keyframe;
|
||||
import net.minecraft.client.animation.KeyframeAnimations;
|
||||
|
||||
public class BreadMonsterAnimation {
|
||||
public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(1.44F).looping()
|
||||
.addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, -2.5F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(0.0F, 3.33F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(1.44F, KeyframeAnimations.degreeVec(0.0F, -2.5F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("Ljaw", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(2.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(1.44F, KeyframeAnimations.degreeVec(2.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("UJaw", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(-5.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(1.44F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("tail", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 5.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(0.0F, -7.5F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(1.44F, KeyframeAnimations.degreeVec(0.0F, 5.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.build();
|
||||
|
||||
public static final AnimationDefinition MOVE = AnimationDefinition.Builder.withLength(1.44F).looping()
|
||||
.addAnimation("root", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(1.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0.0F, 5.0F, -1.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.posVec(-1.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.posVec(-2.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.84F, KeyframeAnimations.posVec(0.0F, 5.0F, -1.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.96F, KeyframeAnimations.posVec(1.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(1.44F, KeyframeAnimations.posVec(1.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.degreeVec(7.5283F, 4.9571F, 0.6543F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.2F, KeyframeAnimations.degreeVec(12.5094F, 1.6524F, 0.2181F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.84F, KeyframeAnimations.degreeVec(7.5283F, -4.9571F, -0.6543F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.92F, KeyframeAnimations.degreeVec(15.0189F, -3.3047F, -0.4362F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.96F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("Ljaw", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.degreeVec(25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.32F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.84F, KeyframeAnimations.degreeVec(25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(1.04F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("UJaw", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.degreeVec(-25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.32F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.84F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(1.04F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("tail", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.degreeVec(-10.0374F, -4.9238F, 0.8704F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.72F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.84F, KeyframeAnimations.degreeVec(-12.5462F, 4.8812F, -1.0848F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.96F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.build();
|
||||
}
|
@ -1,155 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.client.animation;
|
||||
|
||||
import net.minecraft.client.animation.AnimationChannel;
|
||||
import net.minecraft.client.animation.AnimationDefinition;
|
||||
import net.minecraft.client.animation.Keyframe;
|
||||
import net.minecraft.client.animation.KeyframeAnimations;
|
||||
|
||||
public class LoaderAnimation {
|
||||
public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(0.16F).looping()
|
||||
.addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.08F, KeyframeAnimations.posVec(0F, -0.1F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("Head", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.08F, KeyframeAnimations.posVec(0F, -0.1F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("LeftArm", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0.1F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, -0.2F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightArm", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0.1F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, -0.2F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.build();
|
||||
|
||||
public static final AnimationDefinition MOVE = AnimationDefinition.Builder.withLength(0.48F).looping()
|
||||
.addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, 0.3F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.36F, KeyframeAnimations.posVec(0F, 0.3F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("Head", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, 0.3F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.36F, KeyframeAnimations.posVec(0F, 0.3F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("LeftLeg", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, -2F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.posVec(0F, 1F, 1F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.36F, KeyframeAnimations.posVec(0F, 2F, -2F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(0F, 0F, -2F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("LeftLeg", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-22.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(22.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(-22.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightLeg", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, 2F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, 2F, -2F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.posVec(0F, 0F, -2F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.36F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(0F, 0F, 2F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightLeg", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(22.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(-22.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(22.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("LeftArm", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, 0.2F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.36F, KeyframeAnimations.posVec(0F, 0.2F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("LeftArm", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(6F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(-6F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(6F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("ElbowR", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-30F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(-19.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(-30F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightArm", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.12F, KeyframeAnimations.posVec(0F, 0.2F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.36F, KeyframeAnimations.posVec(0F, 0.2F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(0F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightArm", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-6F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(6F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(-6F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("ElbowL", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-16.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.24F, KeyframeAnimations.degreeVec(-25.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(-16.5F, 0F, 0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.build();
|
||||
|
||||
public static final AnimationDefinition ATTACK = AnimationDefinition.Builder.withLength(0.48F).looping()
|
||||
.addAnimation("LeftArm", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(19.27F, 2.7545F, -11.804F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.degreeVec(25.4138F, -37.1586F, -16.0129F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("LeftArm", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.1F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.posVec(-4.0F, -1.0F, 6.9F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(-1.0F, 0.0F, 0.9F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("ElbowR", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.32F, KeyframeAnimations.degreeVec(-75.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightArm", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(2.0031F, 14.8687F, 7.7614F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.32F, KeyframeAnimations.degreeVec(-105.5693F, -6.858F, 48.036F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(-4.4119F, -9.6204F, 22.9232F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightArm", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.4F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.posVec(3.0F, 3.0F, -9.6F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(0.0F, 2.0F, -2.6F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("ElbowL", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-32.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.2F, KeyframeAnimations.degreeVec(-60.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(-25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("Head", new AnimationChannel(AnimationChannel.Targets.POSITION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.posVec(-0.6F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.posVec(3.0F, 0.0F, -2.6F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.posVec(1.0F, 0.0F, -1.6F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 7.5F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.16F, KeyframeAnimations.degreeVec(0.0F, -35.0F, 0.0F), AnimationChannel.Interpolations.LINEAR),
|
||||
new Keyframe(0.48F, KeyframeAnimations.degreeVec(0.0F, -12.5F, 0.0F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("LeftLeg", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(-4.9953F, -0.2178F, -2.4905F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.addAnimation("RightLeg", new AnimationChannel(AnimationChannel.Targets.ROTATION,
|
||||
new Keyframe(0.0F, KeyframeAnimations.degreeVec(7.4929F, -0.3262F, 2.4786F), AnimationChannel.Interpolations.LINEAR)
|
||||
))
|
||||
.build();
|
||||
}
|
@ -1,7 +1,9 @@
|
||||
package ru.dbotthepony.mc.otm.client.model;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.HumanoidModel;
|
||||
import net.minecraft.client.model.PlayerModel;
|
||||
import net.minecraft.client.model.geom.PartPose;
|
||||
@ -18,9 +20,9 @@ import net.minecraft.client.renderer.entity.RenderLayerParent;
|
||||
import net.minecraft.client.renderer.entity.layers.RenderLayer;
|
||||
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.neoforged.neoforge.client.event.RenderPlayerEvent;
|
||||
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||
import ru.dbotthepony.mc.otm.player.IMatteryPlayer;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Set;
|
||||
@ -31,8 +33,8 @@ public final class ExosuitModel {
|
||||
public static final HumanoidModel<AbstractClientPlayer> modelNormal;
|
||||
public static final HumanoidModel<AbstractClientPlayer> modelGlow;
|
||||
|
||||
public static final ResourceLocation texture = ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit.png");
|
||||
public static final ResourceLocation textureColor = ResourceLocation.fromNamespaceAndPath(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit_color.png");
|
||||
public static final ResourceLocation texture = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit.png");
|
||||
public static final ResourceLocation textureColor = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit_color.png");
|
||||
|
||||
static {
|
||||
MeshDefinition meshdefinition = new MeshDefinition();
|
||||
@ -103,6 +105,7 @@ public final class ExosuitModel {
|
||||
super(p_117346_);
|
||||
}
|
||||
|
||||
@SuppressWarnings("OptionalGetWithoutIsPresent")
|
||||
@Override
|
||||
public void render(
|
||||
@Nonnull PoseStack poseStack,
|
||||
@ -119,7 +122,13 @@ public final class ExosuitModel {
|
||||
if (player.isInvisible())
|
||||
return;
|
||||
|
||||
var mattery = ((IMatteryPlayer) player).getOtmPlayer();
|
||||
var cap = player.getCapability(MatteryCapability.MATTERY_PLAYER);
|
||||
|
||||
if (!cap.isPresent()) {
|
||||
return;
|
||||
}
|
||||
|
||||
var mattery = cap.resolve().get();
|
||||
|
||||
if (mattery.getHasExopack() && mattery.isExopackVisible()) {
|
||||
var model = getParentModel();
|
||||
@ -134,10 +143,10 @@ public final class ExosuitModel {
|
||||
packedLight,
|
||||
overlayCoords,
|
||||
// rgba
|
||||
-1
|
||||
1f, 1f, 1f, 1f
|
||||
);
|
||||
|
||||
var color = mattery.getExopackColor();
|
||||
var color = cap.resolve().get().getExopackColor();
|
||||
|
||||
if (color != null) {
|
||||
modelNormal.renderToBuffer(
|
||||
@ -145,7 +154,8 @@ public final class ExosuitModel {
|
||||
bufferSource.getBuffer(RenderType.entityCutoutNoCull(textureColor)),
|
||||
packedLight,
|
||||
overlayCoords,
|
||||
color.toBGRA()
|
||||
// rgba
|
||||
color.getRed(), color.getGreen(), color.getBlue(), 1f
|
||||
);
|
||||
}
|
||||
|
||||
@ -155,7 +165,8 @@ public final class ExosuitModel {
|
||||
bufferSource.getBuffer(RenderType.entityTranslucentEmissive(texture)),
|
||||
packedLight,
|
||||
overlayCoords,
|
||||
-1
|
||||
// rgba
|
||||
1f, 1f, 1f, 1f
|
||||
);
|
||||
} else {
|
||||
modelGlow.renderToBuffer(
|
||||
@ -164,7 +175,7 @@ public final class ExosuitModel {
|
||||
packedLight,
|
||||
overlayCoords,
|
||||
// rgba
|
||||
-1
|
||||
1f, 1f, 1f, 1f
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,8 @@ import net.minecraft.client.model.HumanoidModel;
|
||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||
import net.minecraft.client.model.geom.PartPose;
|
||||
import net.minecraft.client.model.geom.builders.*;
|
||||
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
|
||||
import net.minecraftforge.client.ForgeHooksClient;
|
||||
import net.minecraftforge.client.event.EntityRenderersEvent;
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||
import ru.dbotthepony.mc.otm.registry.MNames;
|
||||
|
||||
|
@ -11,7 +11,8 @@ import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||
import net.minecraft.client.model.geom.ModelLayers;
|
||||
import net.minecraft.client.model.geom.PartPose;
|
||||
import net.minecraft.client.model.geom.builders.*;
|
||||
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
|
||||
import net.minecraftforge.client.ForgeHooksClient;
|
||||
import net.minecraftforge.client.event.EntityRenderersEvent;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
|
@ -1,73 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.client.model.entity;
|
||||
|
||||
import net.minecraft.client.model.HierarchicalModel;
|
||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||
import net.minecraft.client.model.geom.ModelPart;
|
||||
import net.minecraft.client.model.geom.PartPose;
|
||||
import net.minecraft.client.model.geom.builders.CubeDeformation;
|
||||
import net.minecraft.client.model.geom.builders.CubeListBuilder;
|
||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
||||
import net.minecraft.client.model.geom.builders.MeshDefinition;
|
||||
import net.minecraft.client.model.geom.builders.PartDefinition;
|
||||
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import ru.dbotthepony.mc.otm.client.animation.BreadMonsterAnimation;
|
||||
import ru.dbotthepony.mc.otm.entity.BreadMonster;
|
||||
import ru.dbotthepony.mc.otm.registry.MNames;
|
||||
|
||||
import static ru.dbotthepony.mc.otm.OverdriveThatMatters.loc;
|
||||
|
||||
public class BreadMonsterModel {
|
||||
public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(loc(MNames.BREAD_MONSTER), "main");
|
||||
|
||||
private static HierarchicalModel<BreadMonster> model;
|
||||
private static LayerDefinition def;
|
||||
|
||||
public static HierarchicalModel<BreadMonster> getModel() {
|
||||
if (model == null) {
|
||||
return model = new BreadMonsterHierarchicalModel<>(def.bakeRoot());
|
||||
}
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
public static LayerDefinition createBodyLayer() {
|
||||
MeshDefinition meshdefinition = new MeshDefinition();
|
||||
PartDefinition partdefinition = meshdefinition.getRoot();
|
||||
|
||||
PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F));
|
||||
|
||||
PartDefinition Body = root.addOrReplaceChild("Body", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -3.0F, -5.0F, 8.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -3.0F, 0.0F));
|
||||
PartDefinition Ljaw = Body.addOrReplaceChild("Ljaw", CubeListBuilder.create().texOffs(26, 24).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 3.0F, 4.0F, new CubeDeformation(0.1F)), PartPose.offset(0.0F, 2.0F, -3.0F));
|
||||
PartDefinition UJaw = Body.addOrReplaceChild("UJaw", CubeListBuilder.create().texOffs(0, 24).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 3.0F, 5.0F, new CubeDeformation(0.1F)), PartPose.offset(0.0F, -1.0F, -3.0F));
|
||||
PartDefinition tail = Body.addOrReplaceChild("tail", CubeListBuilder.create().texOffs(0, 12).addBox(-4.0F, -3.0F, -0.1F, 8.0F, 6.0F, 6.0F, new CubeDeformation(-0.1F)), PartPose.offset(0.0F, 0.0F, 1.0F));
|
||||
|
||||
model = null;
|
||||
return def = LayerDefinition.create(meshdefinition, 64, 32);
|
||||
}
|
||||
|
||||
private static class BreadMonsterHierarchicalModel<T extends BreadMonster> extends HierarchicalModel<T> {
|
||||
private final ModelPart root;
|
||||
public BreadMonsterHierarchicalModel(ModelPart root) {
|
||||
this.root = root.getChild("root");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupAnim(@NotNull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
|
||||
this.root().getAllParts().forEach(ModelPart::resetPose);
|
||||
|
||||
// this.applyStatic(BreadMonsterAnimation.IDLE);
|
||||
this.animate(entity.getIdleState(), BreadMonsterAnimation.IDLE, ageInTicks, 1.0F);
|
||||
this.animateWalk(BreadMonsterAnimation.MOVE, limbSwing, limbSwingAmount, 1.0F, 2.5F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ModelPart root() {
|
||||
return this.root;
|
||||
}
|
||||
}
|
||||
|
||||
public static void register(EntityRenderersEvent.RegisterLayerDefinitions event) {
|
||||
event.registerLayerDefinition(LAYER_LOCATION, BreadMonsterModel::createBodyLayer);
|
||||
}
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.client.model.entity;
|
||||
|
||||
import net.minecraft.client.model.HierarchicalModel;
|
||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||
import net.minecraft.client.model.geom.ModelPart;
|
||||
import net.minecraft.client.model.geom.PartPose;
|
||||
import net.minecraft.client.model.geom.builders.*;
|
||||
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import ru.dbotthepony.mc.otm.client.animation.LoaderAnimation;
|
||||
import ru.dbotthepony.mc.otm.entity.Loader;
|
||||
import ru.dbotthepony.mc.otm.registry.MNames;
|
||||
|
||||
import static ru.dbotthepony.mc.otm.OverdriveThatMatters.loc;
|
||||
|
||||
public class LoaderModel {
|
||||
public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(loc(MNames.LOADER), "main");
|
||||
|
||||
private static HierarchicalModel<Loader> model;
|
||||
private static LayerDefinition def;
|
||||
|
||||
public static HierarchicalModel<Loader> getModel() {
|
||||
if (def == null) {
|
||||
def = createBodyLayer(); // Ensure def is created before using it
|
||||
}
|
||||
|
||||
if (model == null) {
|
||||
return model = new LoaderHierarchicalModel<>(def.bakeRoot());
|
||||
}
|
||||
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
public static LayerDefinition createBodyLayer() {
|
||||
MeshDefinition meshdefinition = new MeshDefinition();
|
||||
PartDefinition partdefinition = meshdefinition.getRoot();
|
||||
|
||||
PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F));
|
||||
|
||||
PartDefinition Head = root.addOrReplaceChild("Head", CubeListBuilder.create().texOffs(48, 23).addBox(-3.0F, -1.0F, -2.0F, 6.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, -32.0F, -5.0F));
|
||||
PartDefinition Body = root.addOrReplaceChild("Body", CubeListBuilder.create().texOffs(0, 0).addBox(-10.0F, -16.0F, -5.0F, 20.0F, 10.0F, 13.0F, new CubeDeformation(0.0F))
|
||||
.texOffs(0, 50).addBox(-3.0F, -3.0F, -4.0F, 6.0F, 5.0F, 8.0F, new CubeDeformation(0.0F))
|
||||
.texOffs(112, 52).addBox(10.0F, -13.0F, 0.0F, 2.0F, 6.0F, 6.0F, new CubeDeformation(0.0F))
|
||||
.texOffs(96, 52).addBox(-12.0F, -13.0F, -1.0F, 2.0F, 6.0F, 6.0F, new CubeDeformation(0.0F))
|
||||
.texOffs(53, 0).addBox(-5.0F, -1.0F, 4.0F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -26.0F, -1.0F));
|
||||
PartDefinition antenna_r1 = Body.addOrReplaceChild("antenna_r1", CubeListBuilder.create().texOffs(76, 6).addBox(0.0F, -7.0F, -1.0F, 0.0F, 14.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.0F, -22.0F, 8.0F, -0.2618F, 0.0F, 0.0F));
|
||||
PartDefinition waist_r1 = Body.addOrReplaceChild("waist_r1", CubeListBuilder.create().texOffs(28, 50).addBox(-2.0F, -5.0F, -4.0F, 4.0F, 7.0F, 7.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -3.0F, 2.0F, -0.2618F, 0.0F, 0.0F));
|
||||
|
||||
PartDefinition LeftLeg = root.addOrReplaceChild("LeftLeg", CubeListBuilder.create().texOffs(106, 24).addBox(0.0F, 10.0F, -2.0F, 4.0F, 16.0F, 7.0F, new CubeDeformation(0.0F))
|
||||
.texOffs(66, 46).addBox(-1.0F, -2.0F, -3.0F, 6.0F, 12.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offset(4.0F, -26.0F, -1.0F));
|
||||
PartDefinition RightLeg = root.addOrReplaceChild("RightLeg", CubeListBuilder.create().texOffs(84, 24).addBox(-4.0F, 10.0F, -2.0F, 4.0F, 16.0F, 7.0F, new CubeDeformation(0.0F))
|
||||
.texOffs(48, 34).addBox(-5.0F, -2.0F, -3.0F, 6.0F, 12.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, -26.0F, -1.0F));
|
||||
|
||||
PartDefinition LeftArm = root.addOrReplaceChild("LeftArm", CubeListBuilder.create().texOffs(104, 0).addBox(-1.0F, -7.0F, -4.0F, 4.0F, 16.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(13.0F, -36.0F, 2.0F));
|
||||
PartDefinition ElbowL = LeftArm.addOrReplaceChild("ElbowL", CubeListBuilder.create().texOffs(24, 23).addBox(-2.0F, -0.2F, -2.0F, 4.0F, 19.0F, 8.0F, new CubeDeformation(-0.1F)), PartPose.offset(1.0F, 9.0F, -1.0F));
|
||||
PartDefinition RightArm = root.addOrReplaceChild("RightArm", CubeListBuilder.create().texOffs(80, 0).addBox(-3.0F, -7.0F, -4.0F, 4.0F, 16.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(-13.0F, -36.0F, 1.0F));
|
||||
PartDefinition ElbowR = RightArm.addOrReplaceChild("ElbowR", CubeListBuilder.create().texOffs(0, 23).addBox(-2.0F, -0.2F, -2.0F, 4.0F, 19.0F, 8.0F, new CubeDeformation(-0.1F)), PartPose.offset(-1.0F, 9.0F, -1.0F));
|
||||
|
||||
model = null;
|
||||
return def = LayerDefinition.create(meshdefinition, 128, 64);
|
||||
}
|
||||
|
||||
private static class LoaderHierarchicalModel<T extends Loader> extends HierarchicalModel<T> {
|
||||
private final ModelPart root;
|
||||
public LoaderHierarchicalModel(ModelPart root) {
|
||||
this.root = root.getChild("root");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupAnim(@NotNull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
|
||||
this.root().getAllParts().forEach(ModelPart::resetPose);
|
||||
|
||||
this.root.getChild("Head").yRot = netHeadYaw * ((float) Math.PI / 180F);
|
||||
this.root.getChild("Head").xRot = headPitch * ((float) Math.PI / 180F);
|
||||
|
||||
if (entity.getAttackAnimationTick() > 0) {
|
||||
this.animate(entity.getIdleState(), LoaderAnimation.ATTACK, ageInTicks, 1.0F);
|
||||
}
|
||||
|
||||
this.animateWalk(LoaderAnimation.MOVE, limbSwing, limbSwingAmount, 0.8F, 2.5F);
|
||||
this.animate(entity.getIdleState(), LoaderAnimation.IDLE, ageInTicks, 1.0F);
|
||||
|
||||
}
|
||||
|
||||
public ModelPart getHead() {
|
||||
return this.root.getChild("Head");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public @NotNull ModelPart root() {
|
||||
return this.root;
|
||||
}
|
||||
}
|
||||
|
||||
public static void register(EntityRenderersEvent.RegisterLayerDefinitions event) {
|
||||
event.registerLayerDefinition(LAYER_LOCATION, LoaderModel::createBodyLayer);
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import ru.dbotthepony.mc.otm.multiblock.GlobalBlockEntityRemovalListener;
|
||||
import ru.dbotthepony.mc.otm.core.MultiblockKt;
|
||||
|
||||
// because i know
|
||||
// someone
|
||||
@ -16,10 +16,9 @@ import ru.dbotthepony.mc.otm.multiblock.GlobalBlockEntityRemovalListener;
|
||||
public abstract class BlockEntityMixin {
|
||||
@Inject(
|
||||
at = @At("TAIL"),
|
||||
method = "setRemoved()V",
|
||||
remap = false
|
||||
method = "setRemoved()V"
|
||||
)
|
||||
public void setRemovedListener(CallbackInfo ci) {
|
||||
GlobalBlockEntityRemovalListener.Companion.onBlockEntityInvalidated((BlockEntity) (Object) this);
|
||||
MultiblockKt.onBlockEntityInvalidated((BlockEntity) (Object) this);
|
||||
}
|
||||
}
|
||||
|
@ -1,36 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import ru.dbotthepony.mc.otm.item.tool.RedstoneInteractorItem;
|
||||
|
||||
@Mixin(BlockBehaviour.BlockStateBase.class)
|
||||
public abstract class BlockStateBaseMixin {
|
||||
@Shadow
|
||||
protected abstract BlockState asState();
|
||||
|
||||
@Inject(
|
||||
method = "getSignal(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;)I",
|
||||
at = @At("HEAD"),
|
||||
cancellable = true,
|
||||
remap = false
|
||||
)
|
||||
public void getSignal(BlockGetter p_60747_, BlockPos p_60748_, Direction p_60749_, CallbackInfoReturnable<Integer> info) {
|
||||
if (p_60747_ instanceof Level level) {
|
||||
int hookResult = RedstoneInteractorItem.Companion.getSignalHook(level, this.asState(), p_60748_, p_60749_);
|
||||
|
||||
if (hookResult != -1) {
|
||||
info.setReturnValue(hookResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.compat.vanilla.MatteryChestMenu;
|
||||
|
||||
@Mixin(DispenserBlockEntity.class)
|
||||
public abstract class DispenserBlockEntityMixin {
|
||||
@Overwrite(remap = false)
|
||||
@Overwrite
|
||||
public AbstractContainerMenu createMenu(int p_59312_, Inventory p_59313_) {
|
||||
return MatteryChestMenu.c3x3(p_59312_, p_59313_, (DispenserBlockEntity) (Object) this);
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import ru.dbotthepony.mc.otm.item.weapon.EnergySwordItem;
|
||||
|
||||
@Mixin(EnchantmentHelper.class)
|
||||
public class EnchantmentHelperMixin {
|
||||
@Inject(
|
||||
method = "getSweepingDamageRatio(Lnet/minecraft/world/entity/LivingEntity;)F",
|
||||
at = @At("HEAD"),
|
||||
cancellable = true)
|
||||
private static void getSweepingDamageRatio(LivingEntity p_44822_, CallbackInfoReturnable<Float> info) {
|
||||
var result = EnergySwordItem.getSweepingDamageRatioHook(p_44822_);
|
||||
|
||||
if (result != null) {
|
||||
info.setReturnValue(result);
|
||||
}
|
||||
}
|
||||
}
|
49
src/main/java/ru/dbotthepony/mc/otm/mixin/FoodDataMixin.java
Normal file
49
src/main/java/ru/dbotthepony/mc/otm/mixin/FoodDataMixin.java
Normal file
@ -0,0 +1,49 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.world.Difficulty;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.food.FoodData;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||
|
||||
@Mixin(FoodData.class)
|
||||
public class FoodDataMixin {
|
||||
@Shadow
|
||||
private int lastFoodLevel;
|
||||
@Shadow
|
||||
private int tickTimer;
|
||||
@Shadow
|
||||
private int foodLevel;
|
||||
@Shadow
|
||||
private float exhaustionLevel;
|
||||
|
||||
@Inject(
|
||||
method = "tick(Lnet/minecraft/world/entity/player/Player;)V",
|
||||
at = @At("HEAD"),
|
||||
cancellable = true
|
||||
)
|
||||
private void tick(Player player, CallbackInfo info) {
|
||||
player.getCapability(MatteryCapability.MATTERY_PLAYER).ifPresent(it -> {
|
||||
if (it.isAndroid()) {
|
||||
info.cancel();
|
||||
|
||||
// полностью подменяем логику если андроид
|
||||
lastFoodLevel = foodLevel;
|
||||
|
||||
if (player.level.getDifficulty() == Difficulty.PEACEFUL) {
|
||||
exhaustionLevel = 0f;
|
||||
} else {
|
||||
tickTimer = 0;
|
||||
}
|
||||
|
||||
// не обновляем уровень истощения ибо он обнуляется логикой внутри MatteryPlayerCapability
|
||||
// а так же не регенерируем
|
||||
// ну и не получаем урон от "голодания"
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
|
||||
import static ru.dbotthepony.mc.otm.client.render.RenderHelperKt.popScissorRect;
|
||||
import static ru.dbotthepony.mc.otm.client.render.RenderHelperKt.pushScissorRect;
|
||||
|
||||
// because scissor stack fucking sucks.
|
||||
// mostly because it is not a stack at all.
|
||||
@Mixin(GuiGraphics.class)
|
||||
public abstract class GuiGraphicsMixin {
|
||||
@Overwrite(remap = false)
|
||||
public void enableScissor(int x0, int y0, int x1, int y1) {
|
||||
double scale = Minecraft.getInstance().getWindow().getGuiScale();
|
||||
pushScissorRect((int) (scale * x0), (int) (scale * y0), (int) (scale * (x1 - x0)), (int) (scale * (y1 - y0)));
|
||||
}
|
||||
|
||||
@Overwrite(remap = false)
|
||||
public void disableScissor() {
|
||||
popScissorRect();
|
||||
}
|
||||
}
|
@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.compat.vanilla.MatteryChestMenu;
|
||||
|
||||
@Mixin(HopperBlockEntity.class)
|
||||
public abstract class HopperBlockEntityMixin {
|
||||
@Overwrite(remap = false)
|
||||
@Overwrite
|
||||
public AbstractContainerMenu createMenu(int p_59312_, Inventory p_59313_) {
|
||||
return MatteryChestMenu.hopper(p_59312_, p_59313_, (HopperBlockEntity) (Object) this);
|
||||
}
|
||||
|
@ -6,16 +6,16 @@ import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import ru.dbotthepony.mc.otm.server.triggers.MatteryInventoryChangeTrigger;
|
||||
import ru.dbotthepony.mc.otm.triggers.MatteryInventoryChangeTrigger;
|
||||
|
||||
@Mixin(InventoryChangeTrigger.class)
|
||||
public abstract class InventoryChangeTriggerMixin {
|
||||
@Overwrite(remap = false)
|
||||
@Overwrite
|
||||
public void trigger(ServerPlayer p_43150_, Inventory p_43151_, ItemStack p_43152_) {
|
||||
MatteryInventoryChangeTrigger.INSTANCE.trigger(p_43150_, p_43151_, p_43152_);
|
||||
}
|
||||
|
||||
@Overwrite(remap = false)
|
||||
@Overwrite
|
||||
private void trigger(ServerPlayer p_43154_, Inventory p_43155_, ItemStack p_43156_, int p_43157_, int p_43158_, int p_43159_) {
|
||||
MatteryInventoryChangeTrigger.INSTANCE.trigger(p_43154_, p_43155_, p_43156_, p_43157_, p_43158_, p_43159_);
|
||||
}
|
||||
|
30
src/main/java/ru/dbotthepony/mc/otm/mixin/ItemMixin.java
Normal file
30
src/main/java/ru/dbotthepony/mc/otm/mixin/ItemMixin.java
Normal file
@ -0,0 +1,30 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.Item;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||
import ru.dbotthepony.mc.otm.registry.MCreativeTabsKt;
|
||||
|
||||
@Mixin(Item.class)
|
||||
public abstract class ItemMixin {
|
||||
@Inject(
|
||||
at = @At("HEAD"),
|
||||
method = "getItemCategory()Lnet/minecraft/world/item/CreativeModeTab;",
|
||||
cancellable = true
|
||||
)
|
||||
public void getItemCategory$hook(CallbackInfoReturnable<CreativeModeTab> info) {
|
||||
try {
|
||||
if (MCreativeTabsKt.getMainTabContents().contains((Item) ((Object) this))) {
|
||||
info.setReturnValue(OverdriveThatMatters.INSTANCE.CREATIVE_TAB);
|
||||
} else if (MCreativeTabsKt.getDecorativeTabContents().contains((Item) ((Object) this))) {
|
||||
info.setReturnValue(OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE);
|
||||
}
|
||||
} catch(Throwable err) {
|
||||
info.setReturnValue(CreativeModeTab.TAB_MISC); // fuck you shapedrecipebuilder
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.neoforged.fml.ModList;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import ru.dbotthepony.mc.otm.util.IMatteryLevel;
|
||||
import ru.dbotthepony.mc.otm.util.GJRAND64RandomSource;
|
||||
|
||||
@Mixin(Level.class)
|
||||
public abstract class LevelMixin implements IMatteryLevel {
|
||||
private final RandomSource otm_random = ModList.get().isLoaded("better_random") ? null : new GJRAND64RandomSource();
|
||||
|
||||
@Override
|
||||
public @Nullable RandomSource getOtmRandom() {
|
||||
return otm_random;
|
||||
}
|
||||
}
|
@ -1,32 +1,37 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.projectile.AbstractHurtingProjectile;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import ru.dbotthepony.mc.otm.player.IMatteryPlayer;
|
||||
import ru.dbotthepony.mc.otm.util.IMatteryLevel;
|
||||
import ru.dbotthepony.mc.otm.registry.game.MSoundEvents;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||
import ru.dbotthepony.mc.otm.registry.MSoundEvents;
|
||||
|
||||
@Mixin(AbstractHurtingProjectile.class)
|
||||
public class MixinAbstractHurtingProjectile {
|
||||
@Inject(
|
||||
method = "onDeflection(Lnet/minecraft/world/entity/Entity;Z)V",
|
||||
remap = false,
|
||||
at = @At("TAIL")
|
||||
method = "hurt(Lnet/minecraft/world/damagesource/DamageSource;F)Z",
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/entity/projectile/AbstractHurtingProjectile;markHurt()V",
|
||||
ordinal = 0
|
||||
)
|
||||
)
|
||||
public void onDeflection(Entity entity, boolean byAttack, CallbackInfo info) {
|
||||
if (entity instanceof IMatteryPlayer player) {
|
||||
var cap = player.getOtmPlayer();
|
||||
public void onProjectileHit(DamageSource pSource, float pAmount, CallbackInfoReturnable<Boolean> cir) {
|
||||
Entity entity = pSource.getEntity();
|
||||
if (entity == null) return;
|
||||
|
||||
entity.getCapability(MatteryCapability.MATTERY_PLAYER).ifPresent(cap -> {
|
||||
AbstractHurtingProjectile proj = (AbstractHurtingProjectile)(Object)this;
|
||||
|
||||
if (cap.isAndroid() && proj.getOwner() != entity) {
|
||||
entity.level().playSound(entity, proj.blockPosition(), MSoundEvents.INSTANCE.getANDROID_PROJ_PARRY(), SoundSource.PLAYERS, 1.0f, 0.95f + ((IMatteryLevel) entity.level()).getOtmRandom().nextFloat() * 0.1f);
|
||||
entity.level.playSound((Player) entity, proj.blockPosition(), MSoundEvents.INSTANCE.getANDROID_PROJ_PARRY(), SoundSource.PLAYERS, 1.0f, 0.95f + entity.level.random.nextFloat() * 0.1f);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks;
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks;
|
||||
|
||||
@Mixin(AnvilBlock.class)
|
||||
@SuppressWarnings("unused")
|
||||
@ -14,20 +14,19 @@ public class MixinAnvilBlock {
|
||||
@Inject(
|
||||
method = "damage(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/level/block/state/BlockState;",
|
||||
at = @At("HEAD"),
|
||||
remap = false,
|
||||
cancellable = true)
|
||||
private static void damage(BlockState pState, CallbackInfoReturnable<BlockState> info) {
|
||||
for (var list : MBlocks.INSTANCE.getTRITANIUM_ANVIL().values()) {
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
if (pState.is(list.get(i))) {
|
||||
if (i == list.size() - 1) {
|
||||
info.setReturnValue(null);
|
||||
} else {
|
||||
info.setReturnValue(list.get(i + 1).defaultBlockState().setValue(AnvilBlock.FACING, pState.getValue(AnvilBlock.FACING)));
|
||||
}
|
||||
var list = MBlocks.INSTANCE.getTRITANIUM_ANVIL();
|
||||
|
||||
return;
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
if (pState.is(list.get(i))) {
|
||||
if (i == list.size() - 1) {
|
||||
info.setReturnValue(null);
|
||||
} else {
|
||||
info.setReturnValue(list.get(i + 1).defaultBlockState().setValue(AnvilBlock.FACING, pState.getValue(AnvilBlock.FACING)));
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.client.DeltaTracker;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.server.packs.resources.ResourceManager;
|
||||
import net.minecraft.server.packs.resources.ResourceProvider;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@ -13,24 +13,21 @@ import ru.dbotthepony.mc.otm.client.render.RenderHelperKt;
|
||||
@Mixin(GameRenderer.class)
|
||||
public class MixinGameRenderer {
|
||||
@Inject(
|
||||
method = "render(Lnet/minecraft/client/DeltaTracker;Z)V",
|
||||
remap = false,
|
||||
method = "render(FJZ)V",
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
remap = false,
|
||||
target = "Lcom/mojang/blaze3d/pipeline/RenderTarget;bindWrite(Z)V"
|
||||
)
|
||||
)
|
||||
private void render(DeltaTracker p_348648_, boolean p_109096_, CallbackInfo ci) {
|
||||
private void render(float p_109094_, long p_109095_, boolean p_109096_, CallbackInfo ci) {
|
||||
GlitchRenderer.render();
|
||||
}
|
||||
|
||||
@Inject(
|
||||
method = "reloadShaders(Lnet/minecraft/server/packs/resources/ResourceProvider;)V",
|
||||
remap = false,
|
||||
method = "reloadShaders(Lnet/minecraft/server/packs/resources/ResourceManager;)V",
|
||||
at = @At("HEAD")
|
||||
)
|
||||
private void reloadShaders(ResourceProvider p_250719_, CallbackInfo ci) {
|
||||
private void reloadShaders(ResourceManager p_250719_, CallbackInfo ci) {
|
||||
RenderHelperKt.reloadShaders(p_250719_);
|
||||
}
|
||||
}
|
||||
|
@ -3,13 +3,13 @@ package ru.dbotthepony.mc.otm.mixin;
|
||||
import net.minecraft.CrashReport;
|
||||
import net.minecraft.CrashReportCategory;
|
||||
import net.minecraft.ReportedException;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.world.Container;
|
||||
import net.minecraft.world.ContainerHelper;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@ -17,21 +17,20 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import ru.dbotthepony.mc.otm.player.IMatteryPlayer;
|
||||
import ru.dbotthepony.mc.otm.player.MatteryPlayer;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
@Mixin(Inventory.class)
|
||||
public class MixinInventory {
|
||||
@Final
|
||||
@Shadow(remap = false)
|
||||
@Shadow
|
||||
public Player player;
|
||||
|
||||
@Inject(
|
||||
method = "add(ILnet/minecraft/world/item/ItemStack;)Z",
|
||||
at = @At("HEAD"),
|
||||
remap = false,
|
||||
cancellable = true
|
||||
)
|
||||
private void add(int pSlot, ItemStack pStack, CallbackInfoReturnable<Boolean> hook) {
|
||||
@ -40,52 +39,52 @@ public class MixinInventory {
|
||||
}
|
||||
|
||||
if (pSlot == -1) {
|
||||
try {
|
||||
hook.setReturnValue(((IMatteryPlayer) this.player).getOtmPlayer().inventoryAddImpl(pStack));
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Adding item to inventory (Overdrive That Matters detour)");
|
||||
CrashReportCategory crashreportcategory = crashreport.addCategory("Item being added");
|
||||
crashreportcategory.setDetail("Registry Name", () -> String.valueOf(BuiltInRegistries.ITEM.getKey(pStack.getItem())));
|
||||
crashreportcategory.setDetail("Item Class", () -> pStack.getItem().getClass().getName());
|
||||
crashreportcategory.setDetail("Item ID", Item.getId(pStack.getItem()));
|
||||
crashreportcategory.setDetail("Item data", pStack.getDamageValue());
|
||||
crashreportcategory.setDetail("Item name", () -> pStack.getHoverName().getString());
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
this.player.getCapability(MatteryCapability.MATTERY_PLAYER).ifPresent(it -> {
|
||||
try {
|
||||
hook.setReturnValue(it.inventoryAddImpl(pStack));
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Adding item to inventory (Overdrive That Matters detour)");
|
||||
CrashReportCategory crashreportcategory = crashreport.addCategory("Item being added");
|
||||
crashreportcategory.setDetail("Registry Name", () -> String.valueOf(ForgeRegistries.ITEMS.getKey(pStack.getItem())));
|
||||
crashreportcategory.setDetail("Item Class", () -> pStack.getItem().getClass().getName());
|
||||
crashreportcategory.setDetail("Item ID", Item.getId(pStack.getItem()));
|
||||
crashreportcategory.setDetail("Item data", pStack.getDamageValue());
|
||||
crashreportcategory.setDetail("Item name", () -> pStack.getHoverName().getString());
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(
|
||||
method = "dropAll()V",
|
||||
remap = false,
|
||||
at = @At("TAIL")
|
||||
)
|
||||
private void dropAll(CallbackInfo ci) {
|
||||
MatteryPlayer.inventoryDropAll((Inventory)(Object)this);
|
||||
MatteryPlayerCapability.inventoryDropAll((Inventory)(Object)this);
|
||||
}
|
||||
|
||||
@Inject(
|
||||
method = "clearContent()V",
|
||||
remap = false,
|
||||
at = @At("TAIL")
|
||||
)
|
||||
private void clearContent(CallbackInfo ci) {
|
||||
MatteryPlayer.inventoryClearContent((Inventory)(Object)this);
|
||||
MatteryPlayerCapability.inventoryClearContent((Inventory)(Object)this);
|
||||
}
|
||||
|
||||
@Inject(
|
||||
method = "clearOrCountMatchingItems(Ljava/util/function/Predicate;ILnet/minecraft/world/Container;)I",
|
||||
remap = false,
|
||||
at = @At("RETURN"),
|
||||
cancellable = true
|
||||
)
|
||||
private void clearOrCountMatchingItems(Predicate<ItemStack> predicate, int count, Container container, CallbackInfoReturnable<Integer> cir) {
|
||||
var it = ((IMatteryPlayer) this.player).getOtmPlayer();
|
||||
if (!it.getHasExopack()) return;
|
||||
player.getCapability(MatteryCapability.MATTERY_PLAYER).ifPresent(it -> {
|
||||
if (!it.getHasExopack()) return;
|
||||
|
||||
int i = cir.getReturnValue();
|
||||
i += ContainerHelper.clearOrCountMatchingItems(it.getExopackContainer(), predicate, count - i, count == 0);
|
||||
int i = cir.getReturnValue();
|
||||
i += ContainerHelper.clearOrCountMatchingItems(it.getExopackContainer(), predicate, count - i, count == 0);
|
||||
|
||||
cir.setReturnValue(i);
|
||||
cir.setReturnValue(i);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,72 +1,68 @@
|
||||
package ru.dbotthepony.mc.otm.mixin;
|
||||
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.neoforged.neoforge.event.EventHooks;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import net.minecraftforge.event.ForgeEventFactory;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import ru.dbotthepony.mc.otm.player.IMatteryPlayer;
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||
import ru.dbotthepony.mc.otm.config.ServerConfig;
|
||||
import ru.dbotthepony.mc.otm.registry.game.MItems;
|
||||
import ru.dbotthepony.mc.otm.util.ExperienceUtilsKt;
|
||||
import ru.dbotthepony.mc.otm.core.util.ExperienceUtilsKt;
|
||||
import ru.dbotthepony.mc.otm.registry.MItems;
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Mixin(LivingEntity.class)
|
||||
public class MixinLivingEntity {
|
||||
@Shadow(remap = false)
|
||||
@Nullable
|
||||
@Shadow
|
||||
protected Player lastHurtByPlayer;
|
||||
|
||||
@Inject(
|
||||
method = "dropExperience(Lnet/minecraft/world/entity/Entity;)V",
|
||||
remap = false,
|
||||
method = "dropExperience()V",
|
||||
at = @At("HEAD"),
|
||||
cancellable = true)
|
||||
public void dropExperience(@Nullable Entity killer, CallbackInfo hook) {
|
||||
if (((Object) this) instanceof Player player && ServerConfig.INSTANCE.getDROP_EXPERIENCE_CAPSULES() && !player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)) {
|
||||
hook.cancel();
|
||||
public void dropExperience(CallbackInfo hook) {
|
||||
if (((Object) this) instanceof Player player && ServerConfig.INSTANCE.getDROP_EXPERIENCE_CAPSULES()) {
|
||||
player.getCapability(MatteryCapability.MATTERY_PLAYER).ifPresent(it -> {
|
||||
hook.cancel();
|
||||
|
||||
var android = ((IMatteryPlayer) player).getOtmPlayer();
|
||||
long totalExperience = ExperienceUtilsKt.getTotalXpRequiredForLevel(player.experienceLevel);
|
||||
totalExperience += (long) (player.experienceProgress * player.getXpNeededForNextLevel());
|
||||
long totalExperience = ExperienceUtilsKt.getTotalXpRequiredForLevel(player.experienceLevel);
|
||||
totalExperience += (long) (player.experienceProgress * player.getXpNeededForNextLevel());
|
||||
|
||||
double min = ServerConfig.INSTANCE.getMIN_EXPERIENCE_DROPPED();
|
||||
double max = ServerConfig.INSTANCE.getMAX_EXPERIENCE_DROPPED();
|
||||
double min = ServerConfig.INSTANCE.getMIN_EXPERIENCE_DROPPED();
|
||||
double max = ServerConfig.INSTANCE.getMAX_EXPERIENCE_DROPPED();
|
||||
|
||||
if (min == max) {
|
||||
totalExperience *= min;
|
||||
} else {
|
||||
if (min > max) {
|
||||
min = 0.4;
|
||||
max = 0.8;
|
||||
}
|
||||
|
||||
totalExperience *= min + player.getRandom().nextDouble() * (max - min);
|
||||
}
|
||||
|
||||
if (totalExperience >= Integer.MAX_VALUE) {
|
||||
int hooked = EventHooks.getExperienceDrop(player, lastHurtByPlayer, Integer.MAX_VALUE);
|
||||
|
||||
if (hooked != Integer.MAX_VALUE) {
|
||||
totalExperience = hooked;
|
||||
}
|
||||
} else {
|
||||
totalExperience = EventHooks.getExperienceDrop(player, lastHurtByPlayer, (int) totalExperience);
|
||||
}
|
||||
|
||||
if (totalExperience > 0L) {
|
||||
if (android.isAndroid()) {
|
||||
player.drop(MItems.INSTANCE.getESSENCE_DRIVE().make(totalExperience), true, false);
|
||||
if (min == max) {
|
||||
totalExperience *= min;
|
||||
} else {
|
||||
player.drop(MItems.INSTANCE.getESSENCE_CAPSULE().make(totalExperience), true, false);
|
||||
if (min > max) {
|
||||
min = 0.4;
|
||||
max = 0.8;
|
||||
}
|
||||
|
||||
totalExperience *= min + player.getRandom().nextDouble() * (max - min);
|
||||
}
|
||||
}
|
||||
|
||||
if (totalExperience >= Integer.MAX_VALUE) {
|
||||
int hooked = ForgeEventFactory.getExperienceDrop(player, lastHurtByPlayer, Integer.MAX_VALUE);
|
||||
|
||||
if (hooked != Integer.MAX_VALUE) {
|
||||
totalExperience = hooked;
|
||||
}
|
||||
} else {
|
||||
totalExperience = ForgeEventFactory.getExperienceDrop(player, lastHurtByPlayer, (int) totalExperience);
|
||||
}
|
||||
|
||||
if (totalExperience > 0L) {
|
||||
if (it.isAndroid()) {
|
||||
player.drop(MItems.INSTANCE.getESSENCE_DRIVE().make(totalExperience), true, false);
|
||||
} else {
|
||||
player.drop(MItems.INSTANCE.getESSENCE_CAPSULE().make(totalExperience), true, false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user