Deholderize item mesher mixin
This commit is contained in:
parent
827550e8af
commit
add7dd4609
|
|
@ -4,7 +4,6 @@ import net.minecraft.client.renderer.ItemModelShaper;
|
||||||
import net.minecraft.client.resources.model.BakedModel;
|
import net.minecraft.client.resources.model.BakedModel;
|
||||||
import net.minecraft.client.resources.model.ModelManager;
|
import net.minecraft.client.resources.model.ModelManager;
|
||||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||||
import net.minecraft.core.Holder;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.neoforged.neoforge.client.model.RegistryAwareItemModelShaper;
|
import net.neoforged.neoforge.client.model.RegistryAwareItemModelShaper;
|
||||||
|
|
@ -23,11 +22,11 @@ import java.util.Map;
|
||||||
@Mixin(RegistryAwareItemModelShaper.class)
|
@Mixin(RegistryAwareItemModelShaper.class)
|
||||||
@ClientOnlyMixin
|
@ClientOnlyMixin
|
||||||
public abstract class ItemModelMesherForgeMixin extends ItemModelShaper {
|
public abstract class ItemModelMesherForgeMixin extends ItemModelShaper {
|
||||||
@Shadow(remap = false) @Final @Mutable private Map<Holder.Reference<Item>, ModelResourceLocation> locations;
|
@Shadow(remap = false) @Final @Mutable private Map<Item, ModelResourceLocation> locations;
|
||||||
|
|
||||||
private Map<Holder.Reference<Item>, ModelResourceLocation> overrideLocations;
|
private Map<Item, ModelResourceLocation> overrideLocations;
|
||||||
|
|
||||||
private final DynamicModelCache<Holder.Reference<Item>> mfix$modelCache = new DynamicModelCache<>(k -> this.mfix$getModelSlow((Holder.Reference<Item>)k), true);
|
private final DynamicModelCache<Item> mfix$modelCache = new DynamicModelCache<>(k -> this.mfix$getModelSlow((Item)k), true);
|
||||||
|
|
||||||
public ItemModelMesherForgeMixin(ModelManager arg) {
|
public ItemModelMesherForgeMixin(ModelManager arg) {
|
||||||
super(arg);
|
super(arg);
|
||||||
|
|
@ -43,16 +42,16 @@ public abstract class ItemModelMesherForgeMixin extends ItemModelShaper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private ModelResourceLocation mfix$getLocationForge(Holder.Reference<Item> item) {
|
private ModelResourceLocation mfix$getLocationForge(Item item) {
|
||||||
ModelResourceLocation map = overrideLocations.getOrDefault(item, SENTINEL);
|
ModelResourceLocation map = overrideLocations.getOrDefault(item, SENTINEL);
|
||||||
if(map == SENTINEL) {
|
if(map == SENTINEL) {
|
||||||
/* generate the appropriate location from our cache */
|
/* generate the appropriate location from our cache */
|
||||||
map = ModelLocationCache.get(item.value());
|
map = ModelLocationCache.get(item);
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
private BakedModel mfix$getModelSlow(Holder.Reference<Item> key) {
|
private BakedModel mfix$getModelSlow(Item key) {
|
||||||
ModelResourceLocation map = mfix$getLocationForge(key);
|
ModelResourceLocation map = mfix$getLocationForge(key);
|
||||||
return map == null ? null : getModelManager().getModel(map);
|
return map == null ? null : getModelManager().getModel(map);
|
||||||
}
|
}
|
||||||
|
|
@ -65,7 +64,7 @@ public abstract class ItemModelMesherForgeMixin extends ItemModelShaper {
|
||||||
@Overwrite
|
@Overwrite
|
||||||
@Override
|
@Override
|
||||||
public BakedModel getItemModel(Item item) {
|
public BakedModel getItemModel(Item item) {
|
||||||
return this.mfix$modelCache.get(item.builtInRegistryHolder());
|
return this.mfix$modelCache.get(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -76,7 +75,7 @@ public abstract class ItemModelMesherForgeMixin extends ItemModelShaper {
|
||||||
@Overwrite
|
@Overwrite
|
||||||
@Override
|
@Override
|
||||||
public void register(Item item, ModelResourceLocation location) {
|
public void register(Item item, ModelResourceLocation location) {
|
||||||
overrideLocations.put(item.builtInRegistryHolder(), location);
|
overrideLocations.put(item, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user