mirror of
				https://github.com/GeyserMC/Geyser.git
				synced 2024-08-14 23:57:35 +00:00 
			
		
		
		
	Ensure we load mod resources correctly on Geyser-NeoForge (#4651)
* correctly load jar resource files on neoforge * also add support for neoforge-floodgate
This commit is contained in:
		
							parent
							
								
									7801e357fb
								
							
						
					
					
						commit
						86dafbc108
					
				
					 3 changed files with 28 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -31,7 +31,9 @@ dependencies {
 | 
			
		|||
 | 
			
		||||
    // Let's shade in our own api
 | 
			
		||||
    shadow(projects.api) { isTransitive = false }
 | 
			
		||||
    shadow(projects.common) { isTransitive = false }
 | 
			
		||||
 | 
			
		||||
    // cannot be shaded, since neoforge will complain if floodgate-neoforge tries to provide this
 | 
			
		||||
    include(projects.common)
 | 
			
		||||
 | 
			
		||||
    // Include all transitive deps of core via JiJ
 | 
			
		||||
    includeTransitive(projects.core)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@ package org.geysermc.geyser.platform.neoforge;
 | 
			
		|||
 | 
			
		||||
import net.minecraft.commands.CommandSourceStack;
 | 
			
		||||
import net.minecraft.world.entity.player.Player;
 | 
			
		||||
import net.neoforged.fml.ModContainer;
 | 
			
		||||
import net.neoforged.fml.common.Mod;
 | 
			
		||||
import net.neoforged.fml.loading.FMLLoader;
 | 
			
		||||
import net.neoforged.neoforge.common.NeoForge;
 | 
			
		||||
| 
						 | 
				
			
			@ -43,8 +44,8 @@ public class GeyserNeoForgeBootstrap extends GeyserModBootstrap {
 | 
			
		|||
 | 
			
		||||
    private final GeyserNeoForgePermissionHandler permissionHandler = new GeyserNeoForgePermissionHandler();
 | 
			
		||||
 | 
			
		||||
    public GeyserNeoForgeBootstrap() {
 | 
			
		||||
        super(new GeyserNeoForgePlatform());
 | 
			
		||||
    public GeyserNeoForgeBootstrap(ModContainer container) {
 | 
			
		||||
        super(new GeyserNeoForgePlatform(container));
 | 
			
		||||
 | 
			
		||||
        if (isServer()) {
 | 
			
		||||
            // Set as an event so we can get the proper IP and port if needed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,20 +26,29 @@
 | 
			
		|||
package org.geysermc.geyser.platform.neoforge;
 | 
			
		||||
 | 
			
		||||
import net.minecraft.server.MinecraftServer;
 | 
			
		||||
import net.neoforged.fml.ModContainer;
 | 
			
		||||
import net.neoforged.fml.ModList;
 | 
			
		||||
import net.neoforged.fml.loading.FMLPaths;
 | 
			
		||||
import org.checkerframework.checker.nullness.qual.NonNull;
 | 
			
		||||
import org.checkerframework.checker.nullness.qual.Nullable;
 | 
			
		||||
import org.geysermc.geyser.GeyserBootstrap;
 | 
			
		||||
import org.geysermc.geyser.api.util.PlatformType;
 | 
			
		||||
import org.geysermc.geyser.dump.BootstrapDumpInfo;
 | 
			
		||||
import org.geysermc.geyser.platform.mod.GeyserModBootstrap;
 | 
			
		||||
import org.geysermc.geyser.platform.mod.platform.GeyserModPlatform;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.InputStream;
 | 
			
		||||
import java.nio.file.Files;
 | 
			
		||||
import java.nio.file.Path;
 | 
			
		||||
 | 
			
		||||
public class GeyserNeoForgePlatform implements GeyserModPlatform {
 | 
			
		||||
 | 
			
		||||
    private final ModContainer container;
 | 
			
		||||
 | 
			
		||||
    public GeyserNeoForgePlatform(ModContainer container) {
 | 
			
		||||
        this.container = container;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public @NonNull PlatformType platformType() {
 | 
			
		||||
        return PlatformType.NEOFORGE;
 | 
			
		||||
| 
						 | 
				
			
			@ -62,11 +71,21 @@ public class GeyserNeoForgePlatform implements GeyserModPlatform {
 | 
			
		|||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean testFloodgatePluginPresent(@NonNull GeyserModBootstrap bootstrap) {
 | 
			
		||||
        return false; // No Floodgate mod for NeoForge yet
 | 
			
		||||
        if (ModList.get().isLoaded("floodgate")) {
 | 
			
		||||
            Path floodgateDataFolder = FMLPaths.CONFIGDIR.get().resolve("floodgate");
 | 
			
		||||
            bootstrap.getGeyserConfig().loadFloodgate(bootstrap, floodgateDataFolder);
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public @Nullable InputStream resolveResource(@NonNull String resource) {
 | 
			
		||||
        return GeyserBootstrap.class.getClassLoader().getResourceAsStream(resource);
 | 
			
		||||
        try {
 | 
			
		||||
            Path path = container.getModInfo().getOwningFile().getFile().findResource(resource);
 | 
			
		||||
            return Files.newInputStream(path);
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue