Bläddra i källkod

Grindstone 第二次尝试替换 GUI

LTCatt 6 år sedan
förälder
incheckning
c312600e86

+ 2 - 2
src/main/java/com/hexdragon/enchrebirth/EnchRebirth.java

@@ -1,5 +1,6 @@
 package com.hexdragon.enchrebirth;
 
+import com.hexdragon.enchrebirth.reg.Reg;
 import net.minecraftforge.eventbus.api.IEventBus;
 import net.minecraftforge.fml.common.Mod;
 import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@@ -10,7 +11,6 @@ public class EnchRebirth {
 
     public EnchRebirth() {
         IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
-        // Reg.ITEMS.register(modEventBus);
-        // Reg.BLOCKS.register(modEventBus);
+        Reg.CONTAINERS.register(modEventBus);
     }
 }

+ 6 - 6
src/main/java/com/hexdragon/enchrebirth/block/GrindstoneContainerRe.java

@@ -39,12 +39,12 @@ public class GrindstoneContainerRe extends Container {
     };
     private final IWorldPosCallable worldPosCallable;
 
-    public GrindstoneContainerRe(int p_i50080_1_, PlayerInventory playerInventoryIn) {
-        this(p_i50080_1_, playerInventoryIn, IWorldPosCallable.DUMMY);
+    public GrindstoneContainerRe(int windowIdIn, PlayerInventory playerInventoryIn) {
+        this(windowIdIn, playerInventoryIn, IWorldPosCallable.DUMMY);
     }
 
-    public GrindstoneContainerRe(int windowIdIn, PlayerInventory p_i50081_2_, final IWorldPosCallable worldPosCallableIn) {
-        super(Reg.containerGrindstone, windowIdIn);
+    public GrindstoneContainerRe(int windowIdIn, PlayerInventory playerInventoryIn, final IWorldPosCallable worldPosCallableIn) {
+        super(Reg.containerGrindstone.get(), windowIdIn);
         this.worldPosCallable = worldPosCallableIn;
         this.addSlot(new Slot(this.inputInventory, 0, 49, 19) {
             /**
@@ -124,12 +124,12 @@ public class GrindstoneContainerRe extends Container {
 
         for (int i = 0; i < 3; ++i) {
             for (int j = 0; j < 9; ++j) {
-                this.addSlot(new Slot(p_i50081_2_, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
+                this.addSlot(new Slot(playerInventoryIn, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
             }
         }
 
         for (int k = 0; k < 9; ++k) {
-            this.addSlot(new Slot(p_i50081_2_, k, 8 + k * 18, 152)); // Modified
+            this.addSlot(new Slot(playerInventoryIn, k, 8 + k * 18, 152)); // Modified
         }
 
     }

+ 0 - 24
src/main/java/com/hexdragon/enchrebirth/mixin/ContainerTypeMixin.java

@@ -1,24 +0,0 @@
-package com.hexdragon.enchrebirth.mixin;
-
-import com.hexdragon.enchrebirth.block.GrindstoneContainerRe;
-import net.minecraft.inventory.container.Container;
-import net.minecraft.inventory.container.ContainerType;
-import net.minecraft.util.registry.Registry;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
-
-@Mixin(ContainerType.class)
-public abstract class ContainerTypeMixin<T extends Container> extends net.minecraftforge.registries.ForgeRegistryEntry<net.minecraft.inventory.container.ContainerType<?>> implements net.minecraftforge.common.extensions.IForgeContainerType<T> {
-
-    @Inject(method = "register", at = @At(value = "HEAD"), cancellable = true, locals = LocalCapture.CAPTURE_FAILEXCEPTION)
-    private static <T extends Container> void register(String key, ContainerType.IFactory<T> factory, CallbackInfoReturnable<ContainerType<T>> cir) {
-        if (key == "grindstone") {
-            cir.setReturnValue(Registry.register(Registry.MENU, key, (ContainerType<T>) new ContainerType<>(GrindstoneContainerRe::new)));
-            cir.cancel();
-        }
-    }
-
-}

+ 9 - 2
src/main/java/com/hexdragon/enchrebirth/reg/Reg.java

@@ -1,12 +1,19 @@
 package com.hexdragon.enchrebirth.reg;
 
+import com.hexdragon.enchrebirth.EnchRebirth;
 import com.hexdragon.enchrebirth.block.GrindstoneContainerRe;
+import net.minecraft.entity.player.PlayerInventory;
 import net.minecraft.inventory.container.ContainerType;
-import net.minecraft.util.registry.Registry;
+import net.minecraft.network.PacketBuffer;
+import net.minecraftforge.common.extensions.IForgeContainerType;
+import net.minecraftforge.fml.RegistryObject;
+import net.minecraftforge.registries.DeferredRegister;
+import net.minecraftforge.registries.ForgeRegistries;
 
 public class Reg {
 
-    public static final ContainerType<GrindstoneContainerRe> containerGrindstone = Registry.register(Registry.MENU, "grindstone", new ContainerType<>(GrindstoneContainerRe::new));
+    public static final DeferredRegister<ContainerType<?>> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, EnchRebirth.MODID);
+    public static final RegistryObject<ContainerType<GrindstoneContainerRe>> containerGrindstone = CONTAINERS.register("grindstone", () -> IForgeContainerType.create((int windowId, PlayerInventory inv, PacketBuffer data) -> new GrindstoneContainerRe(windowId, inv)));
 
     // 物品
     // public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, EnchRebirth.MODID);

+ 0 - 15
src/main/java/com/hexdragon/enchrebirth/reg/RegClient.java

@@ -1,15 +0,0 @@
-package com.hexdragon.enchrebirth.reg;
-
-import com.hexdragon.enchrebirth.block.GrindstoneScreenRe;
-import net.minecraft.client.gui.ScreenManager;
-import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.api.distmarker.OnlyIn;
-
-@OnlyIn(Dist.CLIENT)
-public class RegClient {
-
-    static {
-        ScreenManager.registerFactory(Reg.containerGrindstone, GrindstoneScreenRe::new);
-    }
-
-}

+ 18 - 0
src/main/java/com/hexdragon/enchrebirth/reg/ScreenHandler.java

@@ -0,0 +1,18 @@
+package com.hexdragon.enchrebirth.reg;
+
+import com.hexdragon.enchrebirth.EnchRebirth;
+import com.hexdragon.enchrebirth.block.GrindstoneScreenRe;
+import net.minecraft.client.gui.ScreenManager;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+
[email protected](modid = EnchRebirth.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
+public class ScreenHandler {
+
+    @SubscribeEvent
+    public static void clientSetup(final FMLClientSetupEvent e) {
+        ScreenManager.registerFactory(Reg.containerGrindstone.get(), GrindstoneScreenRe::new);
+    }
+
+}

+ 0 - 1
src/main/resources/mixins.enchrebirth.json

@@ -4,7 +4,6 @@
   "compatibilityLevel": "JAVA_8",
   "mixins": [
     "RepairItemRecipeMixin",
-    "ContainerTypeMixin",
     "GrindstoneBlockMixin"
   ]
 }