Parcourir la source

Fix TextureStitchEvent

shedaniel il y a 4 ans
Parent
commit
ad33f84d72

+ 5 - 0
forge/src/main/java/me/shedaniel/architectury/event/forge/EventHandlerImpl.java

@@ -20,6 +20,8 @@ import me.shedaniel.architectury.event.EventHandler;
 import me.shedaniel.architectury.event.events.PlayerEvent;
 import me.shedaniel.architectury.event.events.TextureStitchEvent;
 import me.shedaniel.architectury.event.events.*;
+import me.shedaniel.architectury.forge.ArchitecturyForge;
+import me.shedaniel.architectury.platform.forge.EventBuses;
 import net.minecraft.client.Minecraft;
 import net.minecraft.client.gui.IGuiEventListener;
 import net.minecraft.client.world.ClientWorld;
@@ -61,16 +63,19 @@ public class EventHandlerImpl implements EventHandler.Impl {
     @Override
     public void registerClient() {
         MinecraftForge.EVENT_BUS.register(Client.class);
+        EventBuses.getModEventBus(ArchitecturyForge.MOD_ID).orElseThrow(() -> new IllegalStateException("Where is architectury?")).register(ModBasedEventHandlerImpl.Client.class);
     }
     
     @Override
     public void registerCommon() {
         MinecraftForge.EVENT_BUS.register(Common.class);
+        EventBuses.getModEventBus(ArchitecturyForge.MOD_ID).orElseThrow(() -> new IllegalStateException("Where is architectury?")).register(ModBasedEventHandlerImpl.Common.class);
     }
     
     @Override
     public void registerServer() {
         MinecraftForge.EVENT_BUS.register(Server.class);
+        EventBuses.getModEventBus(ArchitecturyForge.MOD_ID).orElseThrow(() -> new IllegalStateException("Where is architectury?")).register(ModBasedEventHandlerImpl.Server.class);
     }
     
     @OnlyIn(Dist.CLIENT)

+ 46 - 0
forge/src/main/java/me/shedaniel/architectury/event/forge/ModBasedEventHandlerImpl.java

@@ -0,0 +1,46 @@
+/*
+ * Copyright 2020 shedaniel
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.shedaniel.architectury.event.forge;
+
+import me.shedaniel.architectury.event.events.TextureStitchEvent;
+import net.minecraftforge.api.distmarker.Dist;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+
+public class ModBasedEventHandlerImpl {
+    @OnlyIn(Dist.CLIENT)
+    public static class Client {
+        @SubscribeEvent
+        public static void event(net.minecraftforge.client.event.TextureStitchEvent.Pre event) {
+            TextureStitchEvent.PRE.invoker().stitch(event.getMap(), event::addSprite);
+        }
+        
+        @SubscribeEvent
+        public static void event(net.minecraftforge.client.event.TextureStitchEvent.Post event) {
+            TextureStitchEvent.POST.invoker().stitch(event.getMap());
+        }
+    }
+    
+    public static class Common {
+        
+    }
+    
+    @OnlyIn(Dist.DEDICATED_SERVER)
+    public static class Server {
+        
+    }
+}

+ 6 - 1
forge/src/main/java/me/shedaniel/architectury/forge/ArchitecturyForge.java

@@ -17,11 +17,16 @@
 package me.shedaniel.architectury.forge;
 
 import me.shedaniel.architectury.event.EventHandler;
+import me.shedaniel.architectury.platform.forge.EventBuses;
 import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
 
-@Mod("architectury")
+@Mod(ArchitecturyForge.MOD_ID)
 public class ArchitecturyForge {
+    public static final String MOD_ID = "architectury";
+    
     public ArchitecturyForge() {
+        EventBuses.registerModEventBus(ArchitecturyForge.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus());
         EventHandler.init();
     }
 }