Skip to content

Commit f2dd737

Browse files
Merge remote-tracking branch 'origin/1.11.2-forge' into 1.10.2-forge
2 parents 7419d07 + af799c6 commit f2dd737

4 files changed

Lines changed: 322 additions & 52 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ In the past UMC has been packaged directly with ImmersiveRailroading as it is wa
2424
| [1.19.4-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.19.4-fabric) | ![Universal Mod Core 1.19.4-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/actions/workflows/build.yml/badge.svg?branch=1.19.4-fabric) |
2525
| [1.20.1-forge](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.20.1-forge) | ![Universal Mod Core 1.20.1-forge](https://github.com/TeamOpenIndustry/UniversalModCore/actions/workflows/build.yml/badge.svg?branch=1.20.1-forge) |
2626
| [1.20.1-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.20.1-fabric) | ![Universal Mod Core 1.20.1-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/actions/workflows/build.yml/badge.svg?branch=1.20.1-fabric) |
27-
| [1.20.4-neoforge](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.20.4-neoforge) | ![Universal Mod Core 1.20.4-neoforge](https://github.com/TeamOpenIndustry/UniversalModCore/actions/workflows/build.yml/badge.svg?branch=1.20.4-neoforge) |
28-
| [1.20.4-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.20.4-fabric) | ![Universal Mod Core 1.20.4-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/actions/workflows/build.yml/badge.svg?branch=1.20.4-fabric) |
27+
| [1.20.4-neoforge](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.20.4-neoforge) | EOL |
28+
| [1.20.4-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.20.4-fabric) | EOL |
2929
| [1.21.1-neoforge](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.21.1-neoforge) | ![Universal Mod Core 1.21.1-neoforge](https://github.com/TeamOpenIndustry/UniversalModCore/actions/workflows/build.yml/badge.svg?branch=1.21.1-neoforge) |
3030
| [1.21.1-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/tree/1.21.1-fabric) | ![Universal Mod Core 1.21.1-fabric](https://github.com/TeamOpenIndustry/UniversalModCore/actions/workflows/build.yml/badge.svg?branch=1.21.1-fabric) |
3131

src/main/java/cam72cam/mod/ModCore.java

Lines changed: 21 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,13 @@
1111
import cam72cam.mod.net.PacketDirection;
1212
import cam72cam.mod.render.BlockRender;
1313
import cam72cam.mod.render.Light;
14+
import cam72cam.mod.resource.BuiltinPack;
1415
import cam72cam.mod.resource.Identifier;
1516
import cam72cam.mod.text.Command;
1617
import cam72cam.mod.util.MinecraftFiles;
1718
import cam72cam.mod.util.ModCoreCommand;
1819
import cam72cam.mod.world.ChunkManager;
1920
import net.minecraft.client.Minecraft;
20-
import net.minecraft.client.resources.FileResourcePack;
21-
import net.minecraft.client.resources.FolderResourcePack;
2221
import net.minecraft.client.resources.IResourcePack;
2322
import net.minecraft.client.resources.SimpleReloadableResourceManager;
2423
import net.minecraftforge.fml.common.Loader;
@@ -29,17 +28,13 @@
2928
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
3029
import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
3130
import net.minecraftforge.fml.relauncher.CoreModManager;
32-
import net.minecraftforge.fml.relauncher.Side;
33-
import net.minecraftforge.fml.relauncher.SideOnly;
3431
import org.apache.commons.io.FileUtils;
3532
import org.apache.commons.lang3.StringUtils;
3633
import org.apache.commons.lang3.SystemUtils;
3734
import org.apache.logging.log4j.Logger;
3835
import org.lwjgl.opengl.GL11;
3936

4037
import java.io.File;
41-
import java.io.IOException;
42-
import java.io.InputStream;
4338
import java.lang.reflect.Field;
4439
import java.nio.file.Path;
4540
import java.nio.file.Paths;
@@ -149,6 +144,10 @@ public int getGPUTextureSize() {
149144
return proxy.getGPUTextureSize();
150145
}
151146

147+
public List<Mod> getLoadedMods() {
148+
return mods;
149+
}
150+
152151
@SidedProxy(serverSide = "cam72cam.mod.ModCore$ServerProxy", clientSide = "cam72cam.mod.ModCore$ClientProxy", modId = ModCore.MODID)
153152
private static Proxy proxy;
154153
/** Hooked into forge's proxy system and fires off corresponding events */
@@ -171,62 +170,33 @@ public int getGPUTextureSize() {
171170
}
172171

173172
public static class ClientProxy extends Proxy {
173+
private static boolean constructed = false;
174+
174175
public void event(ModEvent event, Mod m) {
175176
if (event == ModEvent.CONSTRUCT) {
176177
Config.getMaxTextureSize(); //populate
177178

178-
List<IResourcePack> packs = Minecraft.getMinecraft().defaultResourcePacks;
179-
180-
String configDir = Loader.instance().getConfigDir().toString();
181-
new File(configDir).mkdirs();
179+
if (!constructed) {
180+
for (Mod mod : instance.mods) {
181+
BuiltinPack.loadModResource(mod);
182+
}
182183

183-
File folder = new File(configDir + File.separator + m.modID());
184-
if (folder.exists()) {
185-
if (folder.isDirectory()) {
186-
File[] files = folder.listFiles((dir, name) -> name.endsWith(".zip"));
187-
for (File file : files) {
188-
packs.add(createPack(file));
189-
}
184+
List<IResourcePack> packs = Minecraft.getMinecraft().defaultResourcePacks;
185+
IResourcePack modPack = BuiltinPack.attach(Loader.instance().activeModContainer().getSource());
186+
// Ensure people will get our result first via getResourceStream() and getLastResourceStream()
187+
// (Also injects last modified time access)
188+
// BUG: sounds can still be overridden by resource packs
189+
packs.add(1, modPack);
190+
packs.add(modPack);
191+
BuiltinPack.onConstruct(packs);
190192

191-
File[] folders = folder.listFiles((dir, name) -> dir.isDirectory());
192-
for (File dir : folders) {
193-
packs.add(createPack(dir));
194-
}
195-
}
196-
} else {
197-
folder.mkdirs();
193+
constructed = true;
198194
}
199-
200-
IResourcePack modPack = createPack(Loader.instance().activeModContainer().getSource());
201-
// Force first and last (and inject mod time) BUG: sounds can still be overridden by resource packs
202-
packs.add(1, modPack);
203-
packs.add(modPack);
204195
}
205196
super.event(event, m);
206197
m.clientEvent(event);
207198
}
208199

209-
@SideOnly(Side.CLIENT)
210-
private static IResourcePack createPack(File path) {
211-
if (path.isDirectory()) {
212-
return new FolderResourcePack(path) {
213-
@Override
214-
protected InputStream getInputStreamByName(String name) throws IOException {
215-
InputStream stream = super.getInputStreamByName(name);
216-
File file = new File(this.resourcePackFile, name);
217-
return new Identifier.InputStreamMod(stream, file.lastModified());
218-
}
219-
};
220-
} else {
221-
return new FileResourcePack(path) {
222-
@Override
223-
protected InputStream getInputStreamByName(String name) throws IOException {
224-
return new Identifier.InputStreamMod(super.getInputStreamByName(name), resourcePackFile.lastModified());
225-
}
226-
};
227-
}
228-
}
229-
230200
@Override
231201
public int getGPUTextureSize() {
232202
return Math.min(GL11.glGetInteger(GL11.GL_MAX_TEXTURE_SIZE), 8196);
@@ -287,6 +257,7 @@ public void clientEvent(ModEvent event) {
287257
return;
288258
}
289259
ModCore.instance.mods.forEach(mod -> mod.clientEvent(ModEvent.RELOAD));
260+
BuiltinPack.reload();
290261
ClientEvents.fireReload();
291262
});
292263
BlockRender.onPostColorSetup();

0 commit comments

Comments
 (0)