瀏覽代碼

Make Fabric impl way simpler

Yeet NonNull annotations
Leo40Git 4 年之前
父節點
當前提交
1d10df6bb3

+ 0 - 28
common/src/main/java/me/shedaniel/architectury/hooks/FoodPropertiesBuilderAccess.java

@@ -1,28 +0,0 @@
-/*
- * This file is part of architectury.
- * Copyright (C) 2020, 2021 architectury
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-
-package dev.architectury.hooks.item;
-
-import net.minecraft.world.effect.MobEffectInstance;
-
-import java.util.function.Supplier;
-
-public interface FoodPropertiesBuilderAccess {
-    void effect(Supplier<? extends MobEffectInstance> effectSupplier, float chance);
-}

+ 6 - 5
common/src/main/java/me/shedaniel/architectury/hooks/FoodPropertiesHooks.java

@@ -19,18 +19,19 @@
 
 package dev.architectury.hooks.item;
 
+import dev.architectury.injectables.annotations.ExpectPlatform;
 import net.minecraft.world.effect.MobEffectInstance;
 import net.minecraft.world.food.FoodProperties;
-import org.jetbrains.annotations.NotNull;
 
 import java.util.function.Supplier;
 
 public final class FoodPropertiesHooks {
     private FoodPropertiesHooks() {
     }
-    
-    public static void effect(@NotNull FoodProperties.Builder builder,
-                              @NotNull Supplier<? extends MobEffectInstance> effectSupplier, float chance) {
-        ((FoodPropertiesBuilderAccess) builder).effect(effectSupplier, chance);
+
+    @ExpectPlatform
+    public static void effect(FoodProperties.Builder builder,
+                              Supplier<? extends MobEffectInstance> effectSupplier, float chance) {
+        throw new AssertionError();
     }
 }

+ 14 - 0
fabric/src/main/java/me/shedaniel/architectury/hooks/item/fabric/FoodPropertiesHooksImpl.java

@@ -0,0 +1,14 @@
+package dev.architectury.hooks.item.fabric;
+
+import net.minecraft.world.effect.MobEffectInstance;
+import net.minecraft.world.food.FoodProperties;
+
+import java.util.function.Supplier;
+
+public class FoodPropertiesHooksImpl {
+    public static void effect(FoodProperties.Builder builder,
+                              Supplier<? extends MobEffectInstance> effectSupplier, float chance) {
+        // Fabric doesn't have deferred registration, so the mob effect should always be available anyway
+        builder.effect(effectSupplier.get(), chance);
+    }
+}

+ 0 - 30
fabric/src/main/java/me/shedaniel/architectury/impl/fabric/FoodPropertiesAccess.java

@@ -1,30 +0,0 @@
-/*
- * This file is part of architectury.
- * Copyright (C) 2020, 2021 architectury
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-
-package dev.architectury.impl.fabric;
-
-import com.mojang.datafixers.util.Pair;
-import net.minecraft.world.effect.MobEffectInstance;
-
-import java.util.List;
-import java.util.function.Supplier;
-
-public interface FoodPropertiesAccess {
-    void setSuppliedEffects(List<Pair<Supplier<? extends MobEffectInstance>, Float>> list);
-}

+ 0 - 59
fabric/src/main/java/me/shedaniel/architectury/mixin/fabric/MixinFoodProperties.java

@@ -1,59 +0,0 @@
-/*
- * This file is part of architectury.
- * Copyright (C) 2020, 2021 architectury
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-
-package dev.architectury.mixin.fabric;
-
-import com.mojang.datafixers.util.Pair;
-import dev.architectury.impl.fabric.FoodPropertiesAccess;
-import net.minecraft.world.effect.MobEffectInstance;
-import net.minecraft.world.food.FoodProperties;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Supplier;
-
-@Mixin(FoodProperties.class)
-public class MixinFoodProperties implements FoodPropertiesAccess {
-    @Unique
-    private List<Pair<Supplier<? extends MobEffectInstance>, Float>> suppliedEffects;
-    @Unique
-    private List<Pair<MobEffectInstance, Float>> suppliedEffectCache;
-    
-    @Override
-    public void setSuppliedEffects(List<Pair<Supplier<? extends MobEffectInstance>, Float>> list) {
-        this.suppliedEffects = list;
-        suppliedEffectCache = null;
-    }
-    
-    @Inject(method = "getEffects", at = @At("RETURN"))
-    private void addSuppliedEffects(CallbackInfoReturnable<List<Pair<MobEffectInstance, Float>>> cir) {
-        if (suppliedEffectCache == null) {
-            suppliedEffectCache = new ArrayList<>();
-            for (Pair<Supplier<? extends MobEffectInstance>, Float> suppliedEffect : suppliedEffects) {
-                suppliedEffectCache.add(suppliedEffect.mapFirst(Supplier::get));
-            }
-        }
-        cir.getReturnValue().addAll(suppliedEffectCache);
-    }
-}

+ 0 - 51
fabric/src/main/java/me/shedaniel/architectury/mixin/fabric/MixinFoodPropertiesBuilder.java

@@ -1,51 +0,0 @@
-/*
- * This file is part of architectury.
- * Copyright (C) 2020, 2021 architectury
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-
-package dev.architectury.mixin.fabric;
-
-import com.mojang.datafixers.util.Pair;
-import dev.architectury.hooks.item.FoodPropertiesBuilderAccess;
-import dev.architectury.impl.fabric.FoodPropertiesAccess;
-import net.minecraft.world.effect.MobEffectInstance;
-import net.minecraft.world.food.FoodProperties;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-import java.util.ArrayList;
-import java.util.function.Supplier;
-
-@Mixin(FoodProperties.Builder.class)
-public class MixinFoodPropertiesBuilder implements FoodPropertiesBuilderAccess {
-    @Unique
-    private final ArrayList<Pair<Supplier<? extends MobEffectInstance>, Float>> suppliedEffects
-            = new ArrayList<>();
-    
-    @Override
-    public void effect(Supplier<? extends MobEffectInstance> effectSupplier, float chance) {
-        suppliedEffects.add(Pair.of(effectSupplier, chance));
-    }
-    
-    @Inject(method = "build", at = @At("RETURN"))
-    public void passSuppliedEffectsToProps(CallbackInfoReturnable<FoodProperties> cir) {
-        ((FoodPropertiesAccess) cir.getReturnValue()).setSuppliedEffects(suppliedEffects);
-    }
-}

+ 0 - 2
fabric/src/main/resources/architectury.mixins.json

@@ -34,8 +34,6 @@
     "MixinEntityCollisionContext",
     "MixinExplosion",
     "MixinFarmBlock",
-    "MixinFoodProperties",
-    "MixinFoodPropertiesBuilder",
     "MixinFurnaceResultSlot",
     "MixinInventory",
     "MixinItemEntity",