fix: Dungeon swords not being recognized for reforges
This commit is contained in:
@@ -171,9 +171,10 @@ class SBReforgeRecipe(
|
|||||||
|
|
||||||
is Reforge.ReforgeEligibilityFilter.AllowsItemType ->
|
is Reforge.ReforgeEligibilityFilter.AllowsItemType ->
|
||||||
ReforgeStore.resolveItemType(it.itemType)
|
ReforgeStore.resolveItemType(it.itemType)
|
||||||
.flatMap {
|
.flatMapTo(mutableSetOf()) {
|
||||||
RepoItemTypeCache.byItemType[it] ?: listOf()
|
(RepoItemTypeCache.byItemType[it] ?: listOf()) +
|
||||||
}
|
(RepoItemTypeCache.byItemType[it.dungeonVariant] ?: listOf())
|
||||||
|
}.toList()
|
||||||
|
|
||||||
is Reforge.ReforgeEligibilityFilter.AllowsVanillaItemType -> {
|
is Reforge.ReforgeEligibilityFilter.AllowsVanillaItemType -> {
|
||||||
listOf() // TODO: add filter support for this and potentially rework this to search for the declared item type in repo, instead of remapped item type
|
listOf() // TODO: add filter support for this and potentially rework this to search for the declared item type in repo, instead of remapped item type
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
package moe.nea.firmament.events
|
|
||||||
|
|
||||||
import java.util.function.BiConsumer
|
|
||||||
import net.minecraft.client.item.ItemAssetsLoader
|
|
||||||
import net.minecraft.client.render.model.ReferencedModelsCollector
|
|
||||||
import net.minecraft.client.util.ModelIdentifier
|
|
||||||
import net.minecraft.util.Identifier
|
|
||||||
|
|
||||||
// TODO: This event may be removed now since ItemAssetsLoader seems to load all item models now (probably to cope with servers setting the item_model component). Check whether this also applies to blocks now.
|
|
||||||
//@Deprecated(level = DeprecationLevel.ERROR, message = "This is no longer needed, since ItemAssetsLoader loads all item models.")
|
|
||||||
class BakeExtraModelsEvent(
|
|
||||||
private val addAnyModel: BiConsumer<ModelIdentifier, Identifier>,
|
|
||||||
) : FirmamentEvent() {
|
|
||||||
|
|
||||||
fun addNonItemModel(modelIdentifier: ModelIdentifier, identifier: Identifier) {
|
|
||||||
this.addAnyModel.accept(modelIdentifier, identifier)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun addItemModel(modelIdentifier: ModelIdentifier) {
|
|
||||||
// TODO: If this is still needed: ItemAssetsLoader.FINDER
|
|
||||||
// addNonItemModel(
|
|
||||||
// modelIdentifier,
|
|
||||||
// modelIdentifier.id.withPrefixedPath())
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Deprecated(level = DeprecationLevel.ERROR, message = "This is no longer needed, since ItemAssetsLoader loads all item models.")
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
companion object : FirmamentEventBus<BakeExtraModelsEvent>()
|
|
||||||
}
|
|
||||||
@@ -68,6 +68,7 @@ object ReforgeStore : ExtraRecipeProvider, IReloadable {
|
|||||||
val actualItemTypes = resolveItemType(eligibleItem.itemType)
|
val actualItemTypes = resolveItemType(eligibleItem.itemType)
|
||||||
for (itemType in actualItemTypes) {
|
for (itemType in actualItemTypes) {
|
||||||
byType.getOrPut(itemType, ::mutableListOf).add(reforge)
|
byType.getOrPut(itemType, ::mutableListOf).add(reforge)
|
||||||
|
byType.getOrPut(itemType.dungeonVariant, ::mutableListOf).add(reforge)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ value class ItemType private constructor(val name: String) {
|
|||||||
val PET = ofName("PET")
|
val PET = ofName("PET")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val dungeonVariant get() = ofName("DUNGEON $name")
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import net.minecraft.util.math.BlockPos
|
|||||||
import net.minecraft.util.profiler.Profiler
|
import net.minecraft.util.profiler.Profiler
|
||||||
import moe.nea.firmament.Firmament
|
import moe.nea.firmament.Firmament
|
||||||
import moe.nea.firmament.annotations.Subscribe
|
import moe.nea.firmament.annotations.Subscribe
|
||||||
import moe.nea.firmament.events.BakeExtraModelsEvent
|
|
||||||
import moe.nea.firmament.events.EarlyResourceReloadEvent
|
import moe.nea.firmament.events.EarlyResourceReloadEvent
|
||||||
import moe.nea.firmament.events.FinalizeResourceManagerEvent
|
import moe.nea.firmament.events.FinalizeResourceManagerEvent
|
||||||
import moe.nea.firmament.events.SkyblockServerUpdateEvent
|
import moe.nea.firmament.events.SkyblockServerUpdateEvent
|
||||||
@@ -238,15 +237,6 @@ object CustomBlockTextures {
|
|||||||
{ prepare(event.resourceManager) }, event.preparationExecutor)
|
{ prepare(event.resourceManager) }, event.preparationExecutor)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
fun bakeExtraModels(event: BakeExtraModelsEvent) {
|
|
||||||
preparationFuture.join().data.values
|
|
||||||
.flatMap { it.lookup.values }
|
|
||||||
.flatten()
|
|
||||||
.mapTo(mutableSetOf()) { it.replacement.blockModelIdentifier }
|
|
||||||
.forEach { event.addNonItemModel(it, it.id) }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun prepare(manager: ResourceManager): BakedReplacements {
|
private fun prepare(manager: ResourceManager): BakedReplacements {
|
||||||
val resources = manager.findResources("overrides/blocks") {
|
val resources = manager.findResources("overrides/blocks") {
|
||||||
it.namespace == "firmskyblock" && it.path.endsWith(".json")
|
it.namespace == "firmskyblock" && it.path.endsWith(".json")
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import net.minecraft.util.Identifier
|
|||||||
import net.minecraft.util.profiler.Profiler
|
import net.minecraft.util.profiler.Profiler
|
||||||
import moe.nea.firmament.Firmament
|
import moe.nea.firmament.Firmament
|
||||||
import moe.nea.firmament.annotations.Subscribe
|
import moe.nea.firmament.annotations.Subscribe
|
||||||
import moe.nea.firmament.events.BakeExtraModelsEvent
|
|
||||||
import moe.nea.firmament.events.CustomItemModelEvent
|
import moe.nea.firmament.events.CustomItemModelEvent
|
||||||
import moe.nea.firmament.events.EarlyResourceReloadEvent
|
import moe.nea.firmament.events.EarlyResourceReloadEvent
|
||||||
import moe.nea.firmament.events.FinalizeResourceManagerEvent
|
import moe.nea.firmament.events.FinalizeResourceManagerEvent
|
||||||
@@ -69,15 +68,6 @@ object CustomGlobalTextures : SinglePreparationResourceReloader<CustomGlobalText
|
|||||||
}, event.preparationExecutor)
|
}, event.preparationExecutor)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
fun onBakeModels(event: BakeExtraModelsEvent) {
|
|
||||||
for (guiClassOverride in preparationFuture.join().classes) {
|
|
||||||
for (override in guiClassOverride.overrides) {
|
|
||||||
event.addItemModel(ModelIdentifier(override.model, "inventory"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Volatile
|
@Volatile
|
||||||
var preparationFuture: CompletableFuture<CustomGuiTextureOverride> = CompletableFuture.completedFuture(
|
var preparationFuture: CompletableFuture<CustomGuiTextureOverride> = CompletableFuture.completedFuture(
|
||||||
CustomGuiTextureOverride(listOf()))
|
CustomGuiTextureOverride(listOf()))
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
package moe.nea.firmament.mixins.custommodels;
|
|
||||||
|
|
||||||
import com.llamalad7.mixinextras.sugar.Local;
|
|
||||||
import moe.nea.firmament.events.BakeExtraModelsEvent;
|
|
||||||
import net.minecraft.client.item.ItemAssetsLoader;
|
|
||||||
import net.minecraft.client.render.model.BakedModelManager;
|
|
||||||
import net.minecraft.client.render.model.BlockStatesLoader;
|
|
||||||
import net.minecraft.client.render.model.ReferencedModelsCollector;
|
|
||||||
import net.minecraft.client.render.model.UnbakedModel;
|
|
||||||
import net.minecraft.client.util.ModelIdentifier;
|
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Mixin(BakedModelManager.class)
|
|
||||||
public abstract class ReferenceCustomModelsPatch {
|
|
||||||
@Inject(method = "collect", at = @At("RETURN"))
|
|
||||||
private static void addFirmamentReferencedModels(
|
|
||||||
UnbakedModel missingModel, Map<Identifier, UnbakedModel> models, BlockStatesLoader.BlockStateDefinition blockStates, ItemAssetsLoader.Result itemAssets, CallbackInfoReturnable<ReferencedModelsCollector> cir,
|
|
||||||
@Local ReferencedModelsCollector collector) {
|
|
||||||
// TODO: Insert fake models based on firmskyblock models for a smoother transition
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user