Fix serverlang loading issue, by frontloading MC and Forge langs,

so error messaging works.

Signed-off-by: cpw <cpw+github@weeksfamily.ca>
This commit is contained in:
cpw 2019-02-15 20:00:41 -05:00
parent 1e6f3fc893
commit 36ccb3bbfe
No known key found for this signature in database
GPG key ID: 8EB3DF749553B1B7
3 changed files with 18 additions and 3 deletions

View file

@ -105,8 +105,11 @@ public class LoadingModList
return null; return null;
} }
public URL findURLForResource(final String resourceName) { public URL findURLForResource(String resourceName) {
for (ModFileInfo mf : modFiles) { for (ModFileInfo mf : modFiles) {
// strip a leading slash
if (resourceName.startsWith("/")) resourceName = resourceName.substring(1);
final Path resource = mf.getFile().findResource(resourceName); final Path resource = mf.getFile().findResource(resourceName);
if (Files.exists(resource)) { if (Files.exists(resource)) {
try { try {

View file

@ -26,7 +26,7 @@ import net.minecraft.resources.IResource;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.util.JsonUtils; import net.minecraft.util.JsonUtils;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.packs.ResourcePackLoader; import net.minecraftforge.fml.ForgeI18n;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -91,6 +91,17 @@ public class LanguageHook
}); });
} }
static void loadForgeAndMCLangs() {
modTable = new HashMap<>(5000);
final InputStream mc = Thread.currentThread().getContextClassLoader().getResourceAsStream("assets/minecraft/lang/en_us.json");
final InputStream forge = Thread.currentThread().getContextClassLoader().getResourceAsStream("assets/forge/lang/en_us.json");
loadLocaleData(mc);
loadLocaleData(forge);
capturedTables.forEach(t->t.putAll(modTable));
ForgeI18n.loadLanguageData(modTable);
}
static void loadLanguagesOnServer(MinecraftServer server) { static void loadLanguagesOnServer(MinecraftServer server) {
modTable = new HashMap<>(5000); modTable = new HashMap<>(5000);
// Possible multi-language server support? // Possible multi-language server support?
@ -98,5 +109,6 @@ public class LanguageHook
loadLanguage(lang, server); loadLanguage(lang, server);
} }
capturedTables.forEach(t->t.putAll(modTable)); capturedTables.forEach(t->t.putAll(modTable));
ForgeI18n.loadLanguageData(modTable);
} }
} }

View file

@ -23,7 +23,6 @@ import net.minecraft.server.dedicated.DedicatedServer;
import net.minecraftforge.fml.LogicalSidedProvider; import net.minecraftforge.fml.LogicalSidedProvider;
import net.minecraftforge.fml.ModLoader; import net.minecraftforge.fml.ModLoader;
import net.minecraftforge.fml.SidedProvider; import net.minecraftforge.fml.SidedProvider;
import net.minecraftforge.fml.packs.ResourcePackLoader;
public class ServerModLoader public class ServerModLoader
{ {
@ -32,6 +31,7 @@ public class ServerModLoader
ServerModLoader.server = dedicatedServer; ServerModLoader.server = dedicatedServer;
SidedProvider.setServer(()->dedicatedServer); SidedProvider.setServer(()->dedicatedServer);
LogicalSidedProvider.setServer(()->dedicatedServer); LogicalSidedProvider.setServer(()->dedicatedServer);
LanguageHook.loadForgeAndMCLangs();
ModLoader.get().loadMods(); ModLoader.get().loadMods();
} }