WIP: Port some 1.21.5 things
This commit is contained in:
@@ -19,8 +19,8 @@ import kotlinx.serialization.serializer
|
||||
import kotlin.jvm.optionals.getOrNull
|
||||
import net.minecraft.block.Block
|
||||
import net.minecraft.block.BlockState
|
||||
import net.minecraft.client.render.model.BakedModel
|
||||
import net.minecraft.client.util.ModelIdentifier
|
||||
import net.minecraft.client.render.item.model.ItemModel
|
||||
import net.minecraft.client.render.model.BlockStateModel
|
||||
import net.minecraft.registry.RegistryKey
|
||||
import net.minecraft.registry.RegistryKeys
|
||||
import net.minecraft.resource.ResourceManager
|
||||
@@ -57,11 +57,11 @@ object CustomBlockTextures {
|
||||
) {
|
||||
|
||||
@Transient
|
||||
val blockModelIdentifier get() = ModelIdentifier(block.withPrefixedPath("block/"), "firmament")
|
||||
val blockModelIdentifier get() = block.withPrefixedPath("block/")
|
||||
|
||||
@Transient
|
||||
val bakedModel: BakedModel by lazy(LazyThreadSafetyMode.NONE) {
|
||||
MC.instance.bakedModelManager.getModel(blockModelIdentifier)
|
||||
val bakedModel: ItemModel by lazy(LazyThreadSafetyMode.NONE) {
|
||||
MC.instance.bakedModelManager.blockModels.(blockModelIdentifier)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
@@ -189,7 +189,7 @@ object CustomBlockTextures {
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getReplacementModel(block: BlockState, blockPos: BlockPos?): BakedModel? {
|
||||
fun getReplacementModel(block: BlockState, blockPos: BlockPos?): BlockStateModel? {
|
||||
return getReplacement(block, blockPos)?.bakedModel
|
||||
}
|
||||
|
||||
@@ -269,11 +269,6 @@ object CustomBlockTextures {
|
||||
return BakedReplacements(map.mapValues { LocationReplacements(it.value) })
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun patchIndigo(orig: BakedModel, pos: BlockPos, state: BlockState): BakedModel {
|
||||
return getReplacementModel(state, pos) ?: orig
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun onStart(event: FinalizeResourceManagerEvent) {
|
||||
event.resourceManager.registerReloader(object :
|
||||
|
||||
@@ -81,7 +81,11 @@ object CustomGlobalArmorOverrides {
|
||||
null,
|
||||
Optional.of(RegistryKey.of(EquipmentAssetKeys.REGISTRY_KEY, model)),
|
||||
Optional.empty(),
|
||||
Optional.empty(), false, false, false
|
||||
Optional.empty(),
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ import org.slf4j.LoggerFactory
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.UseSerializers
|
||||
import kotlin.jvm.optionals.getOrNull
|
||||
import net.minecraft.client.util.ModelIdentifier
|
||||
import net.minecraft.resource.ResourceManager
|
||||
import net.minecraft.resource.SinglePreparationResourceReloader
|
||||
import net.minecraft.text.Text
|
||||
|
||||
@@ -9,12 +9,11 @@ import net.minecraft.client.render.item.ItemRenderState
|
||||
import net.minecraft.client.render.item.model.BasicItemModel
|
||||
import net.minecraft.client.render.item.model.ItemModel
|
||||
import net.minecraft.client.render.item.model.ItemModelTypes
|
||||
import net.minecraft.client.render.item.tint.TintSource
|
||||
import net.minecraft.client.render.model.ResolvableModel
|
||||
import net.minecraft.client.world.ClientWorld
|
||||
import net.minecraft.entity.LivingEntity
|
||||
import net.minecraft.item.ItemDisplayContext
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.item.ModelTransformationMode
|
||||
import net.minecraft.util.Identifier
|
||||
import moe.nea.firmament.features.texturepack.predicates.AndPredicate
|
||||
|
||||
@@ -29,10 +28,10 @@ class PredicateModel {
|
||||
)
|
||||
|
||||
override fun update(
|
||||
state: ItemRenderState,
|
||||
state: ItemRenderState?,
|
||||
stack: ItemStack,
|
||||
resolver: ItemModelManager,
|
||||
transformationMode: ModelTransformationMode,
|
||||
resolver: ItemModelManager?,
|
||||
displayContext: ItemDisplayContext?,
|
||||
world: ClientWorld?,
|
||||
user: LivingEntity?,
|
||||
seed: Int
|
||||
@@ -42,7 +41,7 @@ class PredicateModel {
|
||||
.findLast { it.predicate.test(stack, user) }
|
||||
?.model
|
||||
?: fallback
|
||||
model.update(state, stack, resolver, transformationMode, world, user, seed)
|
||||
model.update(state, stack, resolver, displayContext, world, user, seed)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlin.jvm.optionals.getOrNull
|
||||
import net.minecraft.nbt.NbtString
|
||||
import net.minecraft.text.Text
|
||||
import moe.nea.firmament.util.MC
|
||||
@@ -26,7 +27,7 @@ interface StringMatcher {
|
||||
}
|
||||
|
||||
fun matches(nbt: NbtString): Boolean {
|
||||
val string = nbt.asString()
|
||||
val string = nbt.value
|
||||
val jsonStart = string.indexOf('{')
|
||||
val stringStart = string.indexOf('"')
|
||||
val isString = stringStart >= 0 && string.subSequence(0, stringStart).isBlank()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
package moe.nea.firmament.features.texturepack.predicates
|
||||
|
||||
import com.google.gson.Gson
|
||||
@@ -5,8 +6,9 @@ import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonObject
|
||||
import com.google.gson.JsonPrimitive
|
||||
import com.mojang.serialization.JsonOps
|
||||
import kotlin.jvm.optionals.getOrDefault
|
||||
import kotlin.jvm.optionals.getOrNull
|
||||
import com.mojang.serialization.JsonOps
|
||||
import moe.nea.firmament.features.texturepack.FirmamentModelPredicate
|
||||
import moe.nea.firmament.features.texturepack.FirmamentModelPredicateParser
|
||||
import moe.nea.firmament.features.texturepack.StringMatcher
|
||||
|
||||
@@ -7,16 +7,17 @@ import moe.nea.firmament.features.texturepack.CustomBlockTextures;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.render.block.BlockModels;
|
||||
import net.minecraft.client.render.block.BlockRenderManager;
|
||||
import net.minecraft.client.render.chunk.SectionBuilder;
|
||||
import net.minecraft.client.render.model.BakedModel;
|
||||
import net.minecraft.client.render.model.BlockStateModel;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
|
||||
@Mixin(BlockRenderManager.class)
|
||||
@Mixin(SectionBuilder.class)
|
||||
public class ReplaceBlockRenderManagerBlockModel {
|
||||
@WrapOperation(method = "renderBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/BlockRenderManager;getModel(Lnet/minecraft/block/BlockState;)Lnet/minecraft/client/render/model/BakedModel;"))
|
||||
private BakedModel replaceModelInRenderBlock(
|
||||
BlockRenderManager instance, BlockState state, Operation<BakedModel> original, @Local(argsOnly = true) BlockPos pos) {
|
||||
@WrapOperation(method = "build", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/BlockRenderManager;getModel(Lnet/minecraft/block/BlockState;)Lnet/minecraft/client/render/model/BlockStateModel;"))
|
||||
private BlockStateModel replaceModelInRenderBlock(BlockRenderManager instance, BlockState state, Operation<BlockStateModel> original, @Local(argsOnly = true) BlockPos pos) {
|
||||
var replacement = CustomBlockTextures.getReplacementModel(state, pos);
|
||||
if (replacement != null) return replacement;
|
||||
CustomBlockTextures.enterFallbackCall();
|
||||
|
||||
Reference in New Issue
Block a user