mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2024-11-13 05:54:01 +01:00
Update to 1.18.2
- Switch to SLF4J logging - Bump version - Add 0.6.1 changelog
This commit is contained in:
parent
4097f7e0a4
commit
74f9e1f9a3
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -59,6 +59,7 @@ body:
|
|||||||
label: Mod Version
|
label: Mod Version
|
||||||
description: The version of the mod you were using when the bug occured
|
description: The version of the mod you were using when the bug occured
|
||||||
options:
|
options:
|
||||||
|
- "0.6.2"
|
||||||
- "0.6.1"
|
- "0.6.1"
|
||||||
- "0.6.0"
|
- "0.6.0"
|
||||||
- "0.5.1"
|
- "0.5.1"
|
||||||
|
@ -186,6 +186,6 @@ curseforge {
|
|||||||
changelog = file('changelog.txt')
|
changelog = file('changelog.txt')
|
||||||
releaseType = project.curse_type
|
releaseType = project.curse_type
|
||||||
mainArtifact jar
|
mainArtifact jar
|
||||||
addGameVersion '1.18.1'
|
addGameVersion '1.18.2'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
0.6.1:
|
||||||
|
Fixes
|
||||||
|
- Fix crash when loading block entities for Flywheel to render, most common when exploring the end.
|
||||||
|
- Fix occasional visual artifacts when enabling optifine shaders.
|
||||||
|
Technical/API
|
||||||
|
- Added more debug information to the F3 screen.
|
||||||
|
- Distance update limiting can now be disabled.
|
||||||
|
|
||||||
0.6.0:
|
0.6.0:
|
||||||
With this release, Flywheel is no longer needed on servers! Forge finally has client commands,
|
With this release, Flywheel is no longer needed on servers! Forge finally has client commands,
|
||||||
and the /flywheel command now takes advantage of this.
|
and the /flywheel command now takes advantage of this.
|
||||||
|
@ -2,10 +2,10 @@ org.gradle.jvmargs = -Xmx3G
|
|||||||
org.gradle.daemon = false
|
org.gradle.daemon = false
|
||||||
|
|
||||||
# mod version info
|
# mod version info
|
||||||
mod_version = 0.6.1
|
mod_version = 0.6.2
|
||||||
mc_update_version = 1.18
|
mc_update_version = 1.18
|
||||||
minecraft_version = 1.18.1
|
minecraft_version = 1.18.2
|
||||||
forge_version = 39.0.59
|
forge_version = 40.0.15
|
||||||
|
|
||||||
# build dependency versions
|
# build dependency versions
|
||||||
forgegradle_version = 5.1.+
|
forgegradle_version = 5.1.+
|
||||||
@ -13,7 +13,7 @@ mixingradle_version = 0.7-SNAPSHOT
|
|||||||
mixin_version = 0.8.5
|
mixin_version = 0.8.5
|
||||||
librarian_version = 1.+
|
librarian_version = 1.+
|
||||||
cursegradle_version = 1.4.0
|
cursegradle_version = 1.4.0
|
||||||
parchment_version = 2022.01.23
|
parchment_version = 2022.03.13
|
||||||
|
|
||||||
# curseforge info
|
# curseforge info
|
||||||
projectId = 486392
|
projectId = 486392
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
package com.jozufozu.flywheel;
|
package com.jozufozu.flywheel;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.apache.maven.artifact.versioning.ArtifactVersion;
|
import org.apache.maven.artifact.versioning.ArtifactVersion;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.backend.Backend;
|
import com.jozufozu.flywheel.backend.Backend;
|
||||||
import com.jozufozu.flywheel.backend.OptifineHandler;
|
import com.jozufozu.flywheel.backend.OptifineHandler;
|
||||||
@ -16,6 +15,7 @@ import com.jozufozu.flywheel.core.compile.ProgramCompiler;
|
|||||||
import com.jozufozu.flywheel.event.ReloadRenderersEvent;
|
import com.jozufozu.flywheel.event.ReloadRenderersEvent;
|
||||||
import com.jozufozu.flywheel.mixin.PausedPartialTickAccessor;
|
import com.jozufozu.flywheel.mixin.PausedPartialTickAccessor;
|
||||||
import com.jozufozu.flywheel.vanilla.VanillaInstances;
|
import com.jozufozu.flywheel.vanilla.VanillaInstances;
|
||||||
|
import com.mojang.logging.LogUtils;
|
||||||
|
|
||||||
import net.minecraft.commands.synchronization.ArgumentTypes;
|
import net.minecraft.commands.synchronization.ArgumentTypes;
|
||||||
import net.minecraft.commands.synchronization.EmptyArgumentSerializer;
|
import net.minecraft.commands.synchronization.EmptyArgumentSerializer;
|
||||||
@ -36,7 +36,7 @@ import net.minecraftforge.network.NetworkConstants;
|
|||||||
public class Flywheel {
|
public class Flywheel {
|
||||||
|
|
||||||
public static final String ID = "flywheel";
|
public static final String ID = "flywheel";
|
||||||
public static final Logger LOGGER = LogManager.getLogger(Flywheel.class);
|
public static final Logger LOGGER = LogUtils.getLogger();
|
||||||
private static ArtifactVersion version;
|
private static ArtifactVersion version;
|
||||||
|
|
||||||
public Flywheel() {
|
public Flywheel() {
|
||||||
|
@ -2,14 +2,14 @@ package com.jozufozu.flywheel.backend;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.slf4j.Logger;
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.FlywheelWorld;
|
import com.jozufozu.flywheel.api.FlywheelWorld;
|
||||||
import com.jozufozu.flywheel.backend.gl.versioned.GlCompat;
|
import com.jozufozu.flywheel.backend.gl.versioned.GlCompat;
|
||||||
import com.jozufozu.flywheel.config.FlwConfig;
|
import com.jozufozu.flywheel.config.FlwConfig;
|
||||||
import com.jozufozu.flywheel.config.FlwEngine;
|
import com.jozufozu.flywheel.config.FlwEngine;
|
||||||
import com.jozufozu.flywheel.core.shader.ProgramSpec;
|
import com.jozufozu.flywheel.core.shader.ProgramSpec;
|
||||||
|
import com.mojang.logging.LogUtils;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
@ -17,7 +17,7 @@ import net.minecraft.world.level.Level;
|
|||||||
import net.minecraft.world.level.LevelAccessor;
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
|
|
||||||
public class Backend {
|
public class Backend {
|
||||||
public static final Logger LOGGER = LogManager.getLogger(Backend.class);
|
public static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
|
||||||
private static FlwEngine engine;
|
private static FlwEngine engine;
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ public class Loader implements ResourceManagerReloadListener {
|
|||||||
programs.put(specName, spec);
|
programs.put(specName, spec);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Backend.LOGGER.error(e);
|
Backend.LOGGER.error("Could not load program " + location, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,10 @@ import java.util.List;
|
|||||||
import java.util.concurrent.ConcurrentLinkedDeque;
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.Flywheel;
|
import com.jozufozu.flywheel.Flywheel;
|
||||||
import com.jozufozu.flywheel.backend.instancing.batching.WaitGroup;
|
import com.jozufozu.flywheel.backend.instancing.batching.WaitGroup;
|
||||||
@ -18,7 +18,7 @@ import net.minecraft.util.Mth;
|
|||||||
|
|
||||||
// https://github.com/CaffeineMC/sodium-fabric/blob/5d364ed5ba63f9067fcf72a078ca310bff4db3e9/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuilder.java
|
// https://github.com/CaffeineMC/sodium-fabric/blob/5d364ed5ba63f9067fcf72a078ca310bff4db3e9/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuilder.java
|
||||||
public class ParallelTaskEngine implements TaskEngine {
|
public class ParallelTaskEngine implements TaskEngine {
|
||||||
private static final Logger LOGGER = LogManager.getLogger("BatchExecutor");
|
private static final Logger LOGGER = LoggerFactory.getLogger("BatchExecutor");
|
||||||
|
|
||||||
private final AtomicBoolean running = new AtomicBoolean(false);
|
private final AtomicBoolean running = new AtomicBoolean(false);
|
||||||
private final WaitGroup wg = new WaitGroup();
|
private final WaitGroup wg = new WaitGroup();
|
||||||
@ -135,11 +135,12 @@ public class ParallelTaskEngine implements TaskEngine {
|
|||||||
return job;
|
return job;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: job context
|
||||||
private void processTask(Runnable job) {
|
private void processTask(Runnable job) {
|
||||||
try {
|
try {
|
||||||
job.run();
|
job.run();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Flywheel.LOGGER.error(e);
|
Flywheel.LOGGER.error("Error running job", e);
|
||||||
} finally {
|
} finally {
|
||||||
ParallelTaskEngine.this.wg.done();
|
ParallelTaskEngine.this.wg.done();
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,7 @@ public class ErrorBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence build() {
|
public String build() {
|
||||||
|
|
||||||
int maxLength = -1;
|
int maxLength = -1;
|
||||||
for (ErrorLine line : lines) {
|
for (ErrorLine line : lines) {
|
||||||
@ -136,6 +136,6 @@ public class ErrorBuilder {
|
|||||||
.append('\n');
|
.append('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder;
|
return builder.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ public class ErrorReporter {
|
|||||||
public static void generateSpanError(Span span, String message) {
|
public static void generateSpanError(Span span, String message) {
|
||||||
SourceFile file = span.getSourceFile();
|
SourceFile file = span.getSourceFile();
|
||||||
|
|
||||||
CharSequence error = ErrorBuilder.error(message)
|
String error = ErrorBuilder.error(message)
|
||||||
.pointAtFile(file)
|
.pointAtFile(file)
|
||||||
.pointAt(span, 2)
|
.pointAt(span, 2)
|
||||||
.build();
|
.build();
|
||||||
@ -26,7 +26,7 @@ public class ErrorReporter {
|
|||||||
|
|
||||||
public static void generateFileError(SourceFile file, String message) {
|
public static void generateFileError(SourceFile file, String message) {
|
||||||
|
|
||||||
CharSequence error = ErrorBuilder.error(message)
|
String error = ErrorBuilder.error(message)
|
||||||
.pointAtFile(file)
|
.pointAtFile(file)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.jozufozu.flywheel.core.virtual;
|
package com.jozufozu.flywheel.core.virtual;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
@ -12,6 +13,7 @@ import com.jozufozu.flywheel.util.Mods;
|
|||||||
import ca.spottedleaf.starlight.common.chunk.ExtendedChunk;
|
import ca.spottedleaf.starlight.common.chunk.ExtendedChunk;
|
||||||
import ca.spottedleaf.starlight.common.light.StarLightEngine;
|
import ca.spottedleaf.starlight.common.light.StarLightEngine;
|
||||||
import it.unimi.dsi.fastutil.longs.LongSet;
|
import it.unimi.dsi.fastutil.longs.LongSet;
|
||||||
|
import it.unimi.dsi.fastutil.longs.LongSets;
|
||||||
import it.unimi.dsi.fastutil.shorts.ShortList;
|
import it.unimi.dsi.fastutil.shorts.ShortList;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
@ -26,7 +28,7 @@ import net.minecraft.world.level.chunk.ChunkStatus;
|
|||||||
import net.minecraft.world.level.chunk.LevelChunkSection;
|
import net.minecraft.world.level.chunk.LevelChunkSection;
|
||||||
import net.minecraft.world.level.chunk.UpgradeData;
|
import net.minecraft.world.level.chunk.UpgradeData;
|
||||||
import net.minecraft.world.level.levelgen.Heightmap;
|
import net.minecraft.world.level.levelgen.Heightmap;
|
||||||
import net.minecraft.world.level.levelgen.feature.StructureFeature;
|
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||||
import net.minecraft.world.level.levelgen.structure.StructureStart;
|
import net.minecraft.world.level.levelgen.structure.StructureStart;
|
||||||
import net.minecraft.world.level.material.Fluid;
|
import net.minecraft.world.level.material.Fluid;
|
||||||
import net.minecraft.world.level.material.FluidState;
|
import net.minecraft.world.level.material.FluidState;
|
||||||
@ -191,35 +193,40 @@ public class VirtualChunk extends ChunkAccess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addReferenceForFeature(StructureFeature<?> arg0, long arg1) {}
|
@Nullable
|
||||||
|
public StructureStart getStartForFeature(ConfiguredStructureFeature<?, ?> pStructure) {
|
||||||
@Override
|
|
||||||
public Map<StructureFeature<?>, LongSet> getAllReferences() {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LongSet getReferencesForFeature(StructureFeature<?> arg0) {
|
public void setStartForFeature(ConfiguredStructureFeature<?, ?> pStructure, StructureStart pStart) {
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StructureStart<?> getStartForFeature(StructureFeature<?> arg0) {
|
public Map<ConfiguredStructureFeature<?, ?>, StructureStart> getAllStarts() {
|
||||||
return null;
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setAllReferences(Map<StructureFeature<?>, LongSet> arg0) {}
|
public void setAllStarts(Map<ConfiguredStructureFeature<?, ?>, StructureStart> pStructureStarts) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStartForFeature(StructureFeature<?> arg0, StructureStart<?> arg1) {}
|
public LongSet getReferencesForFeature(ConfiguredStructureFeature<?, ?> pStructure) {
|
||||||
|
return LongSets.emptySet();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setAllStarts(Map<StructureFeature<?>, StructureStart<?>> p_201612_1_) {}
|
public void addReferenceForFeature(ConfiguredStructureFeature<?, ?> pStructure, long pReference) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<StructureFeature<?>, StructureStart<?>> getAllStarts() {
|
public Map<ConfiguredStructureFeature<?, ?>, LongSet> getAllReferences() {
|
||||||
return null;
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setAllReferences(Map<ConfiguredStructureFeature<?, ?>, LongSet> pStructureReferences) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -52,7 +52,8 @@ public class VirtualChunkSource extends ChunkSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick(BooleanSupplier pHasTimeLeft) {}
|
public void tick(BooleanSupplier p_202162_, boolean p_202163_) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getLoadedChunksCount() {
|
public int getLoadedChunksCount() {
|
||||||
|
@ -15,12 +15,12 @@ import com.jozufozu.flywheel.api.FlywheelWorld;
|
|||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
import net.minecraft.core.SectionPos;
|
import net.minecraft.core.SectionPos;
|
||||||
import net.minecraft.core.Vec3i;
|
import net.minecraft.core.Vec3i;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.sounds.SoundSource;
|
import net.minecraft.sounds.SoundSource;
|
||||||
import net.minecraft.tags.TagContainer;
|
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.crafting.RecipeManager;
|
import net.minecraft.world.item.crafting.RecipeManager;
|
||||||
@ -67,7 +67,7 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public VirtualRenderWorld(Level level, Vec3i biomeOffset, int height, int minBuildHeight) {
|
public VirtualRenderWorld(Level level, Vec3i biomeOffset, int height, int minBuildHeight) {
|
||||||
super((WritableLevelData) level.getLevelData(), level.dimension(), level.dimensionType(), level::getProfiler,
|
super((WritableLevelData) level.getLevelData(), level.dimension(), level.dimensionTypeRegistration(), level::getProfiler,
|
||||||
true, false, 0);
|
true, false, 0);
|
||||||
this.biomeOffset = biomeOffset;
|
this.biomeOffset = biomeOffset;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
@ -188,19 +188,19 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld {
|
|||||||
// BIOME OFFSET
|
// BIOME OFFSET
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Biome getBiome(BlockPos pPos) {
|
public Holder<Biome> getBiome(BlockPos pPos) {
|
||||||
return super.getBiome(pPos.offset(biomeOffset));
|
return super.getBiome(pPos.offset(biomeOffset));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Biome getUncachedNoiseBiome(int pX, int pY, int pZ) {
|
public Holder<Biome> getUncachedNoiseBiome(int pX, int pY, int pZ) {
|
||||||
// Control flow should never reach this method,
|
// Control flow should never reach this method,
|
||||||
// so we add biomeOffset in case some other mod calls this directly.
|
// so we add biomeOffset in case some other mod calls this directly.
|
||||||
return level.getUncachedNoiseBiome(pX + biomeOffset.getX(), pY + biomeOffset.getY(), pZ + biomeOffset.getZ());
|
return level.getUncachedNoiseBiome(pX + biomeOffset.getX(), pY + biomeOffset.getY(), pZ + biomeOffset.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Biome getNoiseBiome(int pX, int pY, int pZ) {
|
public Holder<Biome> getNoiseBiome(int pX, int pY, int pZ) {
|
||||||
// Control flow should never reach this method,
|
// Control flow should never reach this method,
|
||||||
// so we add biomeOffset in case some other mod calls this directly.
|
// so we add biomeOffset in case some other mod calls this directly.
|
||||||
return level.getNoiseBiome(pX + biomeOffset.getX(), pY + biomeOffset.getY(), pZ + biomeOffset.getZ());
|
return level.getNoiseBiome(pX + biomeOffset.getX(), pY + biomeOffset.getY(), pZ + biomeOffset.getZ());
|
||||||
@ -245,11 +245,6 @@ public class VirtualRenderWorld extends Level implements FlywheelWorld {
|
|||||||
return level.getRecipeManager();
|
return level.getRecipeManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TagContainer getTagManager() {
|
|
||||||
return level.getTagManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getFreeMapId() {
|
public int getFreeMapId() {
|
||||||
return level.getFreeMapId();
|
return level.getFreeMapId();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
modLoader = "javafml"
|
modLoader = "javafml"
|
||||||
loaderVersion = "[38,)"
|
loaderVersion = "[40,)"
|
||||||
issueTrackerURL = "https://github.com/Jozufozu/Flywheel/issues"
|
issueTrackerURL = "https://github.com/Jozufozu/Flywheel/issues"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
||||||
@ -16,13 +16,13 @@ A modern engine for modded minecraft.'''
|
|||||||
[[dependencies.flywheel]]
|
[[dependencies.flywheel]]
|
||||||
modId = "forge"
|
modId = "forge"
|
||||||
mandatory = true
|
mandatory = true
|
||||||
versionRange = "[39.0.46,)"
|
versionRange = "[40.0.0,)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "CLIENT"
|
side = "CLIENT"
|
||||||
|
|
||||||
[[dependencies.flywheel]]
|
[[dependencies.flywheel]]
|
||||||
modId = "minecraft"
|
modId = "minecraft"
|
||||||
mandatory = true
|
mandatory = true
|
||||||
versionRange = "[1.18.1,1.19)"
|
versionRange = "[1.18.2,1.19)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "CLIENT"
|
side = "CLIENT"
|
||||||
|
Loading…
Reference in New Issue
Block a user