Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 77 lines 3.2 kB view raw
1package net.lerariemann.infinity.util.loading; 2 3import com.google.common.util.concurrent.AtomicDouble; 4import net.lerariemann.infinity.registry.payload.ModPayloads; 5import net.lerariemann.infinity.util.VersionMethods; 6import net.lerariemann.infinity.util.core.CommonIO; 7import net.lerariemann.infinity.util.platform.InfinityPlatform; 8import net.minecraft.client.Minecraft; 9import net.minecraft.nbt.CompoundTag; 10import net.minecraft.server.packs.repository.PackRepository; 11import org.apache.logging.log4j.LogManager; 12 13import java.io.IOException; 14import java.nio.file.Files; 15import java.nio.file.Path; 16import java.util.Objects; 17import java.util.concurrent.atomic.AtomicInteger; 18 19public interface ShaderLoader { 20 String FILENAME = "current.json"; 21 AtomicInteger iridLevel = new AtomicInteger(-1); 22 AtomicDouble iridProgress = new AtomicDouble(0.0); 23 24 static Path shaderDir(Minecraft client) { 25 return client.getResourcePackDirectory().resolve("infinity/assets/infinity/" + (InfinityPlatform.version > 21 ? "post_effect" : "shaders")); 26 } 27 28 static void reloadShaders(Minecraft client, CompoundTag worldShader, boolean isIridescenceShaderPresent) { 29 if (worldShader.isEmpty()) { 30 reloadShaders(client, false, isIridescenceShaderPresent); 31 } 32 else { 33 LogManager.getLogger().info("Payload received"); 34 CommonIO.write(worldShader, shaderDir(client), ShaderLoader.FILENAME); 35 reloadShaders(client, true, isIridescenceShaderPresent); 36 if (!Objects.equals(ModPayloads.oldShader, worldShader.toString())) { 37 client.reloadResourcePacks(); 38 ModPayloads.oldShader = worldShader.toString(); 39 } 40 } 41 } 42 43 static void reloadShaders(Minecraft client, boolean isWorldShaderPresent, boolean isIridescenceShaderPresent) { 44 if (client.player == null) return; 45 if (isIridescenceShaderPresent) { 46 VersionMethods.loadPP(client, (InfinityPlatform.version > 21 ? "" : "post/") + "iridescence"); 47 return; 48 } 49 iridLevel.set(-1); 50 iridProgress.set(0.0); 51 try { 52 updateWorldShaderFromDisk(client); 53 } catch (IOException e) { 54 throw new RuntimeException(e); 55 } 56 if(isWorldShaderPresent && shaderDir(client).resolve(FILENAME).toFile().exists()) { 57 VersionMethods.loadPP(client, "current"); 58 return; 59 } 60 client.gameRenderer 61 //? if >1.21.2 { 62 .clearPostEffect(); 63 //?} else { 64 /*.shutdownEffect(); 65 *///?} 66 } 67 68 static void updateWorldShaderFromDisk(Minecraft client) throws IOException { 69 PackRepository m = client.getResourcePackRepository(); 70 Path resourcepackPath = client.getResourcePackDirectory().resolve("infinity"); 71 Files.createDirectories(shaderDir(client)); 72 if (!resourcepackPath.resolve("pack.mcmeta").toFile().exists()) 73 CommonIO.write(InfinityPlatform.resourcePackMcmeta("Shader container"), resourcepackPath.toString(), "pack.mcmeta"); 74 m.reload(); 75 m.addPack("file/" + resourcepackPath.getFileName().toString()); 76 } 77}