浏览代码

Cleanup: Use a constructor redirect instead of an overwrite for multipart deduplication

malte0811 4 年之前
父节点
当前提交
eb07b2a199
共有 1 个文件被更改,包括 7 次插入13 次删除
  1. 7 13
      src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartBuilder.java

+ 7 - 13
src/main/java/malte0811/ferritecore/mixin/dedupmultipart/MixinMultipartBuilder.java

@@ -5,26 +5,20 @@ import net.minecraft.block.BlockState;
 import net.minecraft.client.renderer.model.IBakedModel;
 import net.minecraft.client.renderer.model.MultipartBakedModel;
 import org.apache.commons.lang3.tuple.Pair;
-import org.spongepowered.asm.mixin.Final;
 import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Overwrite;
-import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Redirect;
 
 import java.util.List;
 import java.util.function.Predicate;
 
 @Mixin(MultipartBakedModel.Builder.class)
 public class MixinMultipartBuilder {
-    @Shadow
-    @Final
-    private List<Pair<Predicate<BlockState>, IBakedModel>> selectors;
-
-    /**
-     * @reason Cache/deduplicate returned model
-     * @author malte0811
-     */
-    @Overwrite
-    public IBakedModel build() {
+    @Redirect(
+            method = "build",
+            at = @At(value = "NEW", target = "net/minecraft/client/renderer/model/MultipartBakedModel")
+    )
+    public MultipartBakedModel build(List<Pair<Predicate<BlockState>, IBakedModel>> selectors) {
         return Deduplicator.makeMultipartModel(selectors);
     }
 }