aboutsummaryrefslogtreecommitdiff
path: root/src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-07-06 20:38:15 +0200
committerLinnea Gräf <nea@nea.moe>2025-07-06 20:38:15 +0200
commitfb730fa1a6683502efda48882acd438543016b74 (patch)
tree1c117d39c817390c2ba37aef56546a2a19678047 /src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java
parenta792873f7f7fe3cbb19611fb6b1b1c7165e2b50b (diff)
downloadFirmament-fb730fa1a6683502efda48882acd438543016b74.tar.gz
Firmament-fb730fa1a6683502efda48882acd438543016b74.tar.bz2
Firmament-fb730fa1a6683502efda48882acd438543016b74.zip
feat: allow block states to be used for custom block models
Diffstat (limited to 'src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java')
-rw-r--r--src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java b/src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java
index d7ea2a5..c33fd04 100644
--- a/src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java
+++ b/src/texturePacks/java/moe/nea/firmament/mixins/custommodels/LoadExtraBlockStates.java
@@ -1,4 +1,34 @@
package moe.nea.firmament.mixins.custommodels;
+import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
+import com.llamalad7.mixinextras.sugar.Local;
+import moe.nea.firmament.features.texturepack.CustomBlockTextures;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockState;
+import net.minecraft.client.render.model.BlockStatesLoader;
+import net.minecraft.resource.Resource;
+import net.minecraft.state.StateManager;
+import net.minecraft.util.Identifier;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.function.Function;
+
+@Mixin(BlockStatesLoader.class)
public class LoadExtraBlockStates {
+ @ModifyExpressionValue(method = "load", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;"))
+ private static CompletableFuture<Map<Identifier, List<Resource>>> loadExtraModels(
+ CompletableFuture<Map<Identifier, List<Resource>>> x,
+ @Local(argsOnly = true) Executor executor,
+ @Local Function<Identifier, StateManager<Block, BlockState>> stateManagers
+ ) {
+ return x.thenCombineAsync(CustomBlockTextures.getPreparationFuture(), (original, extra) -> {
+ CustomBlockTextures.collectExtraBlockStateMaps(extra, original, stateManagers);
+ return original;
+ }, executor);
+ }
}