Port to release 1.21.5
This commit is contained in:
parent
e6c966cb89
commit
26769c3869
|
|
@ -1,6 +1,6 @@
|
|||
plugins {
|
||||
id "architectury-plugin" version "3.4-SNAPSHOT"
|
||||
id "dev.architectury.loom" version "1.9-SNAPSHOT" apply false
|
||||
id "dev.architectury.loom" version "1.10-SNAPSHOT" apply false
|
||||
id "maven-publish"
|
||||
id 'com.matthewprenger.cursegradle' version '1.4.0' apply false
|
||||
id 'com.palantir.git-version' version '1.0.0'
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ repositories {
|
|||
exclusiveContent {
|
||||
forRepository {
|
||||
maven {
|
||||
url = 'https://maven.saps.dev/minecraft'
|
||||
url = 'https://maven.latvian.dev/releases'
|
||||
}
|
||||
}
|
||||
filter {
|
||||
|
|
|
|||
|
|
@ -9,11 +9,7 @@ import com.google.gson.JsonObject;
|
|||
import com.google.gson.JsonParser;
|
||||
import com.mojang.serialization.JsonOps;
|
||||
import net.minecraft.client.model.geom.EntityModelSet;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
|
||||
import net.minecraft.client.renderer.block.model.BlockStateModel;
|
||||
import net.minecraft.client.renderer.block.model.ItemModelGenerator;
|
||||
import net.minecraft.client.renderer.block.model.SimpleModelWrapper;
|
||||
import net.minecraft.client.renderer.block.model.*;
|
||||
import net.minecraft.client.renderer.item.ClientItem;
|
||||
import net.minecraft.client.renderer.item.ItemModel;
|
||||
import net.minecraft.client.renderer.item.MissingItemModel;
|
||||
|
|
@ -33,16 +29,19 @@ import net.minecraft.client.resources.model.ModelState;
|
|||
import net.minecraft.client.resources.model.ResolvedModel;
|
||||
import net.minecraft.client.resources.model.SpriteGetter;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.packs.resources.Resource;
|
||||
import net.minecraft.server.packs.resources.ResourceManager;
|
||||
import net.minecraft.util.GsonHelper;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import org.embeddedt.modernfix.ModernFix;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
|
@ -146,16 +145,46 @@ public class DynamicModelProvider {
|
|||
public SpriteGetter sprites() {
|
||||
return DynamicModelProvider.this.textureGetter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T compute(SharedOperationKey<T> key) {
|
||||
return key.compute(this);
|
||||
}
|
||||
};
|
||||
var textureSlots = this.resolvedMissingModel.getTopTextureSlots();
|
||||
var quadCollection = this.resolvedMissingModel.bakeTopGeometry(textureSlots, missingModelBaker, BlockModelRotation.X0_Y0);
|
||||
var particleSprite = this.resolvedMissingModel.resolveParticleSprite(textureSlots, missingModelBaker);
|
||||
this.missingModel = new SimpleModelWrapper(quadCollection, resolvedMissingModel.getTopAmbientOcclusion(), particleSprite);
|
||||
this.missingModel = new BlockStateModel() {
|
||||
@Override
|
||||
public void collectParts(RandomSource random, List<BlockModelPart> output) {
|
||||
output.add(new BlockModelPart() {
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(@Nullable Direction direction) {
|
||||
return quadCollection.getQuads(direction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useAmbientOcclusion() {
|
||||
return resolvedMissingModel.getTopAmbientOcclusion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureAtlasSprite particleIcon() {
|
||||
return particleSprite;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureAtlasSprite particleIcon() {
|
||||
return particleSprite;
|
||||
}
|
||||
}; //SimpleModelWrapper(quadCollection, resolvedMissingModel.getTopAmbientOcclusion(), particleSprite);
|
||||
this.missingItemModel = new MissingItemModel(quadCollection.getAll(), new ModelRenderProperties(resolvedMissingModel.getTopGuiLight().lightLikeBlock(), particleSprite, resolvedMissingModel.getTopTransforms()));
|
||||
try {
|
||||
Class.forName("net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin");
|
||||
// TODO
|
||||
//pluginList.add(new FabricDynamicModelHandler(this, this.resourceManager));
|
||||
// pluginList.add(new FabricDynamicModelHandler(this, this.resourceManager));
|
||||
} catch(Exception ignored) {
|
||||
// Fabric API likely not present
|
||||
}
|
||||
|
|
@ -365,7 +394,7 @@ public class DynamicModelProvider {
|
|||
var loadedModels = new HashMap<>(BlockStateModelLoader.loadBlockStateDefinitionStack(location, stateDefinition, loadedDefinitions).models());
|
||||
if (!pluginList.isEmpty()) {
|
||||
loadedModels.replaceAll((mrl, oldModel) -> {
|
||||
BlockStateModel.Unbaked ubm = oldModel;
|
||||
BlockStateModel.UnbakedRoot ubm = oldModel;
|
||||
for (var plugin : pluginList) {
|
||||
ubm = plugin.modifyBlockModelOnLoad(oldModel, mrl);
|
||||
}
|
||||
|
|
@ -375,7 +404,7 @@ public class DynamicModelProvider {
|
|||
return Optional.of(new BlockStateModelLoader.LoadedModels(loadedModels));
|
||||
}
|
||||
|
||||
private BlockStateModel bakeModel(BlockStateModel.Unbaked model, BlockState mrl) {
|
||||
private BlockStateModel bakeModel(BlockStateModel.UnbakedRoot model, BlockState mrl) {
|
||||
if (DEBUG_DYNAMIC_MODEL_LOADING) {
|
||||
ModernFix.LOGGER.info("Baking model '{}'", mrl);
|
||||
}
|
||||
|
|
@ -385,7 +414,7 @@ public class DynamicModelProvider {
|
|||
for (var plugin : pluginList) {
|
||||
model = plugin.modifyBlockModelBeforeBake(model, mrl, modelBaker);
|
||||
}
|
||||
var bakedModel = model.bake(modelBaker);
|
||||
var bakedModel = model.bake(mrl, modelBaker);
|
||||
for (var plugin : pluginList) {
|
||||
bakedModel = plugin.modifyBlockModelAfterBake(bakedModel, model, mrl, modelBaker);
|
||||
}
|
||||
|
|
@ -401,7 +430,8 @@ public class DynamicModelProvider {
|
|||
if (false) { //location.variant().equals("standalone") || location.variant().equals("fabric_resource")) {
|
||||
throw new UnsupportedOperationException(); //return this.loadStandaloneModel(location.id());
|
||||
} else {
|
||||
Optional<BlockStateModel.Unbaked> unbakedModelOpt = Optional.ofNullable(this.unbakedBlockStateModelOverrides.get(state));
|
||||
Optional<BlockStateModel.UnbakedRoot> unbakedModelOpt = Optional.ofNullable(this.unbakedBlockStateModelOverrides.get(state))
|
||||
.map(BlockStateModel.Unbaked::asRoot);
|
||||
if (unbakedModelOpt.isEmpty()) {
|
||||
var optLoadedModels = this.loadedStateDefinitions.getUnchecked(state.getBlock().builtInRegistryHolder().key().location());
|
||||
unbakedModelOpt = optLoadedModels.map(loadedModels -> loadedModels.models().get(state));
|
||||
|
|
@ -552,6 +582,11 @@ public class DynamicModelProvider {
|
|||
public SpriteGetter sprites() {
|
||||
return DynamicModelProvider.this.textureGetter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T compute(SharedOperationKey<T> key) {
|
||||
return key.compute(this);
|
||||
}
|
||||
}
|
||||
|
||||
public static WeakReference<DynamicModelProvider> currentReloadingModelProvider = new WeakReference<>(null);
|
||||
|
|
@ -562,12 +597,12 @@ public class DynamicModelProvider {
|
|||
|
||||
public interface DynamicModelPlugin {
|
||||
Optional<UnbakedModel> modifyModelOnLoad(Optional<UnbakedModel> model, ResourceLocation id);
|
||||
BlockStateModel.Unbaked modifyBlockModelOnLoad(BlockStateModel.Unbaked model, BlockState state);
|
||||
BlockStateModel.UnbakedRoot modifyBlockModelOnLoad(BlockStateModel.UnbakedRoot model, BlockState state);
|
||||
|
||||
UnbakedModel modifyModelBeforeBake(UnbakedModel model, ResourceLocation id, ModelState state, ModelBaker baker);
|
||||
//BakedModel modifyModelAfterBake(BakedModel bakedModel, UnbakedModel model, ResourceLocation id, ModelState state, ModelBaker baker);
|
||||
|
||||
BlockStateModel.Unbaked modifyBlockModelBeforeBake(BlockStateModel.Unbaked model, BlockState state, ModelBaker baker);
|
||||
BlockStateModel modifyBlockModelAfterBake(BlockStateModel bakedModel, BlockStateModel.Unbaked unbaked, BlockState state, ModelBaker baker);
|
||||
BlockStateModel.UnbakedRoot modifyBlockModelBeforeBake(BlockStateModel.UnbakedRoot model, BlockState state, ModelBaker baker);
|
||||
BlockStateModel modifyBlockModelAfterBake(BlockStateModel bakedModel, BlockStateModel.UnbakedRoot unbaked, BlockState state, ModelBaker baker);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,22 +5,23 @@ junit_version=5.10.0-M1
|
|||
mixinextras_version=0.4.1
|
||||
|
||||
mod_id=modernfix
|
||||
minecraft_version=25w07a
|
||||
enabled_platforms=fabric
|
||||
forge_version=21.4.47-beta
|
||||
parchment_version=2024.12.22
|
||||
parchment_mc_version=1.21.4
|
||||
minecraft_version=1.21.5
|
||||
enabled_platforms=neoforge,fabric
|
||||
forge_version=21.5.81
|
||||
parchment_version=2025.06.15
|
||||
parchment_mc_version=1.21.5
|
||||
refined_storage_version=4392788
|
||||
jei_version=19.0.0.9
|
||||
rei_version=13.0.678
|
||||
ctm_version=1.21-1.2.0+2
|
||||
ctm_version=5541286
|
||||
# ctm_version=1.21-1.2.0+2
|
||||
ldlib_version=5782845
|
||||
kubejs_version=1902.6.0-build.142
|
||||
rhino_version=1902.2.2-build.268
|
||||
supported_minecraft_versions=25w07a
|
||||
kubejs_version=2001.6.5-build.16
|
||||
rhino_version=2001.2.3-build.10
|
||||
supported_minecraft_versions=1.21.5
|
||||
|
||||
fabric_loader_version=0.16.10
|
||||
fabric_api_version=0.116.1+1.21.5
|
||||
fabric_api_version=0.119.5+1.21.5
|
||||
|
||||
continuity_version=3.0.0-beta.4+1.20.2
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ dependencies {
|
|||
modCompileOnly("me.shedaniel:RoughlyEnoughItems-forge:${rei_version}") { transitive false }
|
||||
modCompileOnly("dev.latvian.mods:kubejs-forge:${kubejs_version}")
|
||||
//modRuntimeOnly("curse.maven:ferritecore-429235:4441949")
|
||||
modCompileOnly("team.chisel.ctm:CTM:${ctm_version}")
|
||||
modCompileOnly("curse.maven:CTM-267602:${ctm_version}")
|
||||
modCompileOnly("curse.maven:ldlib-626676:${ldlib_version}")
|
||||
|
||||
modCompileOnly("curse.maven:supermartijncore-454372:4455391")
|
||||
|
|
|
|||
|
|
@ -40,12 +40,14 @@ public class ModelBakeEventHelper {
|
|||
|
||||
public ModelBakery.BakingResult createDynamicResult() {
|
||||
return new ModelBakery.BakingResult(
|
||||
this.modelRegistry.getMissingBakedModel(),
|
||||
new ModelBakery.MissingModels(
|
||||
this.modelRegistry.getMissingBakedModel(),
|
||||
this.modelRegistry.getMissingItemModel()
|
||||
),
|
||||
this.modelRegistry.getTopLevelEmulatedRegistry(),
|
||||
this.modelRegistry.getMissingItemModel(),
|
||||
this.modelRegistry.getItemModelEmulatedRegistry(),
|
||||
this.modelRegistry.getItemPropertiesEmulatedRegistry(),
|
||||
this.modelRegistry.getStandaloneEmulatedRegistry()
|
||||
this.modelRegistry.getItemPropertiesEmulatedRegistry()
|
||||
// TODO: Supply the StandaloneModelLoader.BakedModels?
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
|||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
import java.util.Deque;
|
||||
import java.util.List;
|
||||
|
||||
@Mixin(PoseStack.class)
|
||||
@ClientOnlyMixin
|
||||
public interface PoseStackAccessor {
|
||||
@Accessor
|
||||
Deque<PoseStack.Pose> getPoseStack();
|
||||
@Accessor("poses")
|
||||
List<PoseStack.Pose> getPoseStack();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.ModifyArg;
|
|||
@Mixin(ModelManager.class)
|
||||
@ClientOnlyMixin
|
||||
public class ModelManagerMixinNeo {
|
||||
@ModifyArg(method = "loadModels", at = @At(value = "INVOKE", target = "Lnet/neoforged/neoforge/client/ClientHooks;onModifyBakingResult(Lnet/minecraft/client/resources/model/ModelBakery$BakingResult;Ljava/util/Map;Lnet/minecraft/client/resources/model/ModelBakery;)V"), remap = false, index = 0)
|
||||
@ModifyArg(method = "lambda$loadModels$18", at = @At(value = "INVOKE", target = "Lnet/neoforged/neoforge/client/ClientHooks;onModifyBakingResult(Lnet/minecraft/client/resources/model/ModelBakery$BakingResult;Ljava/util/Map;Lnet/minecraft/client/resources/model/ModelBakery;)V"), remap = false, index = 0)
|
||||
private static ModelBakery.BakingResult useDynamicBakingResult(ModelBakery.BakingResult bakingResult) {
|
||||
var currentReloadingProvider = DynamicModelProvider.currentReloadingModelProvider.get();
|
||||
if(ModLoader.hasErrors() || currentReloadingProvider == null) {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
@Mixin(ObjLoader.class)
|
||||
@ClientOnlyMixin
|
||||
public class OBJLoaderMixin {
|
||||
/* TODO: Remove if unnecessary
|
||||
@Final
|
||||
@Mutable
|
||||
@Shadow(remap = false) private Map<ResourceLocation, ObjMaterialLibrary> materialCache;
|
||||
|
|
@ -36,4 +37,5 @@ public class OBJLoaderMixin {
|
|||
private void useConcMap2(ObjLoader instance, Map<ResourceLocation, ObjMaterialLibrary> value) {
|
||||
this.modelCache = new ConcurrentHashMap<>();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package org.embeddedt.modernfix.neoforge.util;
|
||||
|
||||
import net.neoforged.fml.loading.ImmediateWindowHandler;
|
||||
import net.neoforged.fml.loading.FMLLoader;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import org.lwjgl.opengl.GL;
|
||||
import org.lwjgl.opengl.GLCapabilities;
|
||||
|
|
@ -40,7 +40,7 @@ public class AsyncLoadingScreen extends Thread implements AutoCloseable {
|
|||
GL.setCapabilities(caps);
|
||||
while(keepRunning.get()) {
|
||||
LockSupport.parkNanos(TimeUnit.MILLISECONDS.toNanos(50));
|
||||
ImmediateWindowHandler.renderTick();
|
||||
FMLLoader.progressWindowTick.run();
|
||||
}
|
||||
GLFW.glfwMakeContextCurrent(0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user