Command registry events and ReloadListenerRegistry

This commit is contained in:
shedaniel
2020-11-01 22:42:36 +08:00
parent 7279b4cd6e
commit abb57db971
7 changed files with 135 additions and 8 deletions

View File

@@ -17,16 +17,14 @@
package me.shedaniel.architectury.event.forge;
import me.shedaniel.architectury.event.EventFactory;
import me.shedaniel.architectury.event.events.GuiEvent;
import me.shedaniel.architectury.event.events.LifecycleEvent;
import me.shedaniel.architectury.event.events.TickEvent;
import me.shedaniel.architectury.event.events.TooltipEvent;
import me.shedaniel.architectury.event.events.*;
import net.minecraft.client.Minecraft;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.TickEvent.ClientTickEvent;
import net.minecraftforge.event.TickEvent.Phase;
import net.minecraftforge.event.TickEvent.ServerTickEvent;
@@ -115,6 +113,11 @@ public class EventFactoryImpl implements EventFactory.Impl {
public static void event(FMLServerStoppedEvent event) {
LifecycleEvent.SERVER_STOPPED.invoker().stateChanged(event.getServer());
}
@SubscribeEvent
public static void event(RegisterCommandsEvent event) {
CommandRegistrationEvent.EVENT.invoker().register(event.getDispatcher());
}
}
@OnlyIn(Dist.DEDICATED_SERVER)

View File

@@ -0,0 +1,40 @@
package me.shedaniel.architectury.registry.forge;
import com.google.common.collect.Lists;
import me.shedaniel.architectury.registry.ReloadListenerRegistry;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.IFutureReloadListener;
import net.minecraft.resources.IReloadableResourceManager;
import net.minecraft.resources.ResourcePackType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.AddReloadListenerEvent;
import java.util.List;
public class ReloadListenerRegistryImpl implements ReloadListenerRegistry.Impl {
private List<IFutureReloadListener> serverDataReloadListeners = Lists.newArrayList();
public ReloadListenerRegistryImpl() {
MinecraftForge.EVENT_BUS.<AddReloadListenerEvent>addListener(event -> {
for (IFutureReloadListener listener : serverDataReloadListeners) {
event.addListener(listener);
}
});
}
@Override
public void registerReloadListener(ResourcePackType type, IFutureReloadListener listener) {
if (type == ResourcePackType.SERVER_DATA) {
serverDataReloadListeners.add(listener);
} else if (type == ResourcePackType.CLIENT_RESOURCES) {
reloadClientReloadListener(listener);
}
}
@OnlyIn(Dist.CLIENT)
private void reloadClientReloadListener(IFutureReloadListener listener) {
((IReloadableResourceManager) Minecraft.getInstance().getResourceManager()).registerReloadListener(listener);
}
}