Update CTM integration for 1.20.4
Requires https://github.com/Chisel-Team/ConnectedTexturesMod/pull/229 to be built from source
This commit is contained in:
parent
9d7ef772a0
commit
827550e8af
|
|
@ -45,7 +45,7 @@ dependencies {
|
||||||
modCompileOnly("me.shedaniel:RoughlyEnoughItems-forge:${rei_version}") { transitive false }
|
modCompileOnly("me.shedaniel:RoughlyEnoughItems-forge:${rei_version}") { transitive false }
|
||||||
modCompileOnly("dev.latvian.mods:kubejs-forge:${kubejs_version}")
|
modCompileOnly("dev.latvian.mods:kubejs-forge:${kubejs_version}")
|
||||||
//modRuntimeOnly("curse.maven:ferritecore-429235:4441949")
|
//modRuntimeOnly("curse.maven:ferritecore-429235:4441949")
|
||||||
modCompileOnly("team.chisel.ctm:CTM:${ctm_version}")
|
modCompileOnly files("deps/ctm.jar")
|
||||||
|
|
||||||
modCompileOnly("curse.maven:supermartijncore-454372:4455391")
|
modCompileOnly("curse.maven:supermartijncore-454372:4455391")
|
||||||
modCompileOnly("vazkii.patchouli:Patchouli:1.19.2-77")
|
modCompileOnly("vazkii.patchouli:Patchouli:1.19.2-77")
|
||||||
|
|
|
||||||
BIN
neoforge/deps/ctm.jar
Normal file
BIN
neoforge/deps/ctm.jar
Normal file
Binary file not shown.
|
|
@ -3,12 +3,15 @@ package org.embeddedt.modernfix.neoforge.mixin.perf.dynamic_resources.ctm;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.client.resources.model.*;
|
import net.minecraft.client.resources.model.*;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import org.embeddedt.modernfix.ModernFixClient;
|
import org.embeddedt.modernfix.ModernFixClient;
|
||||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||||
import org.embeddedt.modernfix.annotation.RequiresMod;
|
import org.embeddedt.modernfix.annotation.RequiresMod;
|
||||||
import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration;
|
import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration;
|
||||||
|
import org.embeddedt.modernfix.neoforge.dynresources.IModelBakerImpl;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
@ -16,6 +19,9 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import team.chisel.ctm.CTM;
|
import team.chisel.ctm.CTM;
|
||||||
|
import team.chisel.ctm.api.model.IModelCTM;
|
||||||
|
import team.chisel.ctm.client.model.AbstractCTMBakedModel;
|
||||||
|
import team.chisel.ctm.client.model.ModelCTM;
|
||||||
import team.chisel.ctm.client.texture.IMetadataSectionCTM;
|
import team.chisel.ctm.client.texture.IMetadataSectionCTM;
|
||||||
import team.chisel.ctm.client.util.ResourceUtil;
|
import team.chisel.ctm.client.util.ResourceUtil;
|
||||||
import team.chisel.ctm.client.util.TextureMetadataHandler;
|
import team.chisel.ctm.client.util.TextureMetadataHandler;
|
||||||
|
|
@ -23,6 +29,7 @@ import team.chisel.ctm.client.util.TextureMetadataHandler;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Mixin(TextureMetadataHandler.class)
|
@Mixin(TextureMetadataHandler.class)
|
||||||
@RequiresMod("ctm")
|
@RequiresMod("ctm")
|
||||||
|
|
@ -31,22 +38,21 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte
|
||||||
|
|
||||||
@Shadow(remap = false) @Nonnull protected abstract BakedModel wrap(UnbakedModel model, BakedModel object) throws IOException;
|
@Shadow(remap = false) @Nonnull protected abstract BakedModel wrap(UnbakedModel model, BakedModel object) throws IOException;
|
||||||
|
|
||||||
@Shadow(remap = false) @Final public static Multimap<ResourceLocation, Material> TEXTURES_SCRAPED;
|
@Shadow @Final private Multimap<ResourceLocation, Material> scrapedTextures;
|
||||||
|
|
||||||
@Inject(method = "<init>", at = @At("RETURN"))
|
@Inject(method = "<init>", at = @At("RETURN"))
|
||||||
private void subscribeDynamic(CallbackInfo ci) {
|
private void subscribeDynamic(CallbackInfo ci) {
|
||||||
ModernFixClient.CLIENT_INTEGRATIONS.add(this);
|
ModernFixClient.CLIENT_INTEGRATIONS.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = { "onModelBake(Lnet/minecraftforge/client/event/ModelEvent$ModifyBakingResult;)V", "onModelBake(Lnet/minecraftforge/client/event/ModelEvent$BakingCompleted;)V" }, at = @At("HEAD"), cancellable = true, remap = false)
|
@Inject(method = { "onModelBake(Lnet/neoforged/neoforge/client/event/ModelEvent$ModifyBakingResult;)V", "onModelBake(Lnet/neoforged/neoforge/client/event/ModelEvent$BakingCompleted;)V" }, at = @At("HEAD"), cancellable = true, remap = false)
|
||||||
private void noIteration(CallbackInfo ci) {
|
private void noIteration(CallbackInfo ci) {
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BakedModel onBakedModelLoad(ResourceLocation rl, UnbakedModel rootModel, BakedModel baked, ModelState state, ModelBakery bakery) {
|
public BakedModel onBakedModelLoad(ResourceLocation rl, UnbakedModel rootModel, BakedModel baked, ModelState state, ModelBakery bakery) {
|
||||||
if(true) throw new UnsupportedOperationException("not ported yet");
|
if (rl instanceof ModelResourceLocation && !(baked instanceof AbstractCTMBakedModel) && !baked.isCustomRenderer()) {
|
||||||
if (rl instanceof ModelResourceLocation && false /* !(baked instanceof AbstractCTMBakedModel) && !baked.isCustomRenderer() */) {
|
|
||||||
Deque<ResourceLocation> dependencies = new ArrayDeque<>();
|
Deque<ResourceLocation> dependencies = new ArrayDeque<>();
|
||||||
Set<ResourceLocation> seenModels = new HashSet<>();
|
Set<ResourceLocation> seenModels = new HashSet<>();
|
||||||
dependencies.push(rl);
|
dependencies.push(rl);
|
||||||
|
|
@ -63,7 +69,7 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Collection<Material> textures = Sets.newHashSet(TEXTURES_SCRAPED.get(dep));
|
Collection<Material> textures = Sets.newHashSet(scrapedTextures.get(dep));
|
||||||
Collection<ResourceLocation> newDependencies = model.getDependencies();
|
Collection<ResourceLocation> newDependencies = model.getDependencies();
|
||||||
for (Material tex : textures) {
|
for (Material tex : textures) {
|
||||||
IMetadataSectionCTM meta = null;
|
IMetadataSectionCTM meta = null;
|
||||||
|
|
@ -97,8 +103,6 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleInit(ResourceLocation key, BakedModel wrappedModel, ModelBakery bakery) {
|
private void handleInit(ResourceLocation key, BakedModel wrappedModel, ModelBakery bakery) {
|
||||||
if(true) throw new UnsupportedOperationException("not ported yet");
|
|
||||||
/*
|
|
||||||
if(wrappedModel instanceof AbstractCTMBakedModel baked) {
|
if(wrappedModel instanceof AbstractCTMBakedModel baked) {
|
||||||
IModelCTM var10 = baked.getModel();
|
IModelCTM var10 = baked.getModel();
|
||||||
if (var10 instanceof ModelCTM ctmModel) {
|
if (var10 instanceof ModelCTM ctmModel) {
|
||||||
|
|
@ -106,8 +110,8 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte
|
||||||
Function<Material, TextureAtlasSprite> spriteGetter = (m) -> {
|
Function<Material, TextureAtlasSprite> spriteGetter = (m) -> {
|
||||||
return Minecraft.getInstance().getModelManager().getAtlas(m.atlasLocation()).getSprite(m.texture());
|
return Minecraft.getInstance().getModelManager().getAtlas(m.atlasLocation()).getSprite(m.texture());
|
||||||
};
|
};
|
||||||
ModelBakery.ModelBakerImpl baker = ModelBakerImplAccessor.createImpl(bakery, ($, m) -> {
|
ModelBakery.ModelBakerImpl baker = bakery.new ModelBakerImpl((rl, m) -> {
|
||||||
return spriteGetter.apply(m);
|
return m.sprite();
|
||||||
}, key);
|
}, key);
|
||||||
// bypass bakedCache so that dependent models get re-baked and thus retrieve their sprites again
|
// bypass bakedCache so that dependent models get re-baked and thus retrieve their sprites again
|
||||||
((IModelBakerImpl)baker).mfix$ignoreCache();
|
((IModelBakerImpl)baker).mfix$ignoreCache();
|
||||||
|
|
@ -115,6 +119,5 @@ public abstract class TextureMetadataHandlerMixin implements ModernFixClientInte
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user