Skip to content

Commit 3a52fa1

Browse files
committed
todo: realize pack
1 parent 711e198 commit 3a52fa1

7 files changed

Lines changed: 58 additions & 157 deletions

File tree

src/main/java/com/algorithmlx/dimore/mixin/PackRepositoryMixin.java

Lines changed: 0 additions & 62 deletions
This file was deleted.

src/main/kotlin/Mod.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,7 @@ object Mod {
3030
Registry.init()
3131
OreConfig.init()
3232
}
33+
34+
fun onInitializeClient() = initClient()
3335
}
3436
//?}

src/main/kotlin/ModClient.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.algorithmlx.dimore
2+
3+
fun initClient() {
4+
5+
}

src/main/kotlin/init/post/loot/MinecraftLootTable.kt

Lines changed: 0 additions & 86 deletions
This file was deleted.

src/main/kotlin/init/resource/DimOreResourcePack.kt

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.algorithmlx.dimore.init.resource
22

3+
import com.algorithmlx.dimore.LOGGER
34
import com.algorithmlx.dimore.ModId
4-
import net.minecraft.resources.Identifier
5+
import com.algorithmlx.dimore.util.ResLoc
56
import net.minecraft.server.packs.AbstractPackResources
67
import net.minecraft.server.packs.PackLocationInfo
78
import net.minecraft.server.packs.PackResources
@@ -11,26 +12,40 @@ import java.io.File
1112
import java.io.InputStream
1213

1314
class DimOreResourcePack(location: PackLocationInfo) : AbstractPackResources(location) {
15+
private val targetPath = File("config/$ModId/custom/client/")
16+
17+
init {
18+
if (!targetPath.exists()) {
19+
targetPath.parentFile.mkdirs()
20+
targetPath.mkdirs()
21+
LOGGER.info("Created client directories")
22+
}
23+
}
24+
1425
override fun getRootResource(vararg path: String): IoSupplier<InputStream>? = null
1526

1627
override fun getResource(
1728
type: PackType,
18-
location: Identifier
29+
location: ResLoc
1930
): IoSupplier<InputStream>? {
31+
LOGGER.info("Loading custom resources")
2032
if (location.namespace != ModId) return null
2133

2234
val path = location.path
23-
if (!path.contains("generated.")) return null
2435

25-
val relative = when {
36+
if (!path.contains("custom.")) return null
37+
38+
var relative = when {
2639
path.startsWith("models/") -> path.substring("models/".length)
2740
path.startsWith("textures/") -> path.substring("textures/".length)
2841
path.startsWith("model/") -> path.substring("model/".length)
2942
else -> path
3043
}
3144

32-
val target = File("config/$ModId/custom/client/$relative")
33-
if (target.exists()) {
45+
relative = relative.replace("custom.", "")
46+
47+
val target = targetPath.resolve(relative)
48+
if (target.exists() && target.isFile) {
3449
return IoSupplier { target.inputStream() }
3550
}
3651

@@ -42,7 +57,29 @@ class DimOreResourcePack(location: PackLocationInfo) : AbstractPackResources(loc
4257
namespace: String,
4358
directory: String,
4459
output: PackResources.ResourceOutput
45-
) {}
60+
) {
61+
if (namespace != ModId) return
62+
63+
val relative = when {
64+
directory.startsWith("models/") -> directory.substring("models/".length)
65+
directory.startsWith("textures/") -> directory.substring("textures/".length)
66+
directory.startsWith("model/") -> directory.substring("model/".length)
67+
else -> directory
68+
}
69+
70+
val target = targetPath.resolve(relative)
71+
72+
if (target.exists() && target.isDirectory) {
73+
target.listFiles()
74+
.filter { it.isFile }
75+
.filter { !it.name.startsWith("_") }
76+
.forEach { file ->
77+
val path = "$directory/custom.${file.name}"
78+
val resLoc = ResLoc.parse("$ModId:$path")
79+
output.accept(resLoc) { file.inputStream() }
80+
}
81+
}
82+
}
4683

4784
override fun getNamespaces(type: PackType): Set<String> = setOf(ModId)
4885

src/main/resources/dimore.mixins.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
"refmap": "dimore.refmap.json",
66
"compatibilityLevel": "JAVA_17",
77
"mixins": [
8-
"LootDataManagerMixin",
9-
"PackRepositoryMixin"
8+
"LootDataManagerMixin"
109
],
1110
"injectors": {
1211
"defaultRequire": 1

src/main/resources/fabric.mod.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@
2626
"adapter": "kotlin",
2727
"value": "com.algorithmlx.dimore.Mod::onInitialize"
2828
}
29+
],
30+
"client": [
31+
{
32+
"adapter": "kotlin",
33+
"value": "com.algorithmlx.dimore.Mod::onInitializeClient"
34+
}
2935
]
3036
}
3137
}

0 commit comments

Comments
 (0)