Compare commits
8 Commits
build-test
...
java_omega
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c8b3f3cda | |||
| a9a6a19307 | |||
| 208fc69eb7 | |||
| eb1a062934 | |||
| 55d5bca76d | |||
| f81026c707 | |||
| e86af817e0 | |||
| e0fd2b2f7a |
+27
-54
@@ -12,6 +12,8 @@ plugins {
|
|||||||
|
|
||||||
// Architectury is used here only as a replacement for forge's own loom
|
// Architectury is used here only as a replacement for forge's own loom
|
||||||
id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false
|
id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false
|
||||||
|
|
||||||
|
id 'xyz.wagyourtail.jvmdowngrader' version '0.9.1' apply true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -102,16 +104,13 @@ subprojects { p ->
|
|||||||
// Apply plugins
|
// Apply plugins
|
||||||
apply plugin: "java"
|
apply plugin: "java"
|
||||||
apply plugin: "com.github.johnrengelman.shadow"
|
apply plugin: "com.github.johnrengelman.shadow"
|
||||||
|
apply plugin: "xyz.wagyourtail.jvmdowngrader"
|
||||||
if (isMinecraftSubProject)
|
if (isMinecraftSubProject)
|
||||||
apply plugin: "systems.manifold.manifold-gradle-plugin"
|
apply plugin: "systems.manifold.manifold-gradle-plugin"
|
||||||
|
|
||||||
// Apply forge's loom
|
// Apply forge's loom
|
||||||
if ((findProject(":forge") && p == project(":forge")) ||
|
if ( (findProject(":forge") && p == project(":forge")) || (findProject(":neoforge") && p == project(":neoforge")) )
|
||||||
(findProject(":neoforge") && p == project(":neoforge"))
|
|
||||||
)
|
|
||||||
{
|
|
||||||
apply plugin: "dev.architectury.loom"
|
apply plugin: "dev.architectury.loom"
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Set the manifold version (may not be required tough)
|
// Set the manifold version (may not be required tough)
|
||||||
@@ -311,8 +310,21 @@ subprojects { p ->
|
|||||||
|
|
||||||
mergeServiceFiles()
|
mergeServiceFiles()
|
||||||
}
|
}
|
||||||
// Using jar.finalizedBy(shadowJar) causes issues so we do this scuffed bypass
|
|
||||||
jar.dependsOn(shadowJar)
|
// For downgrading the Java version of our project to match the minimum Java version required by the selected Minecraft version.
|
||||||
|
task jarDowngrade(type: xyz.wagyourtail.jvmdg.gradle.task.DowngradeJar) {
|
||||||
|
inputFile = tasks.shadowJar.archiveFile
|
||||||
|
downgradeTo = JavaVersion.toVersion(rootProject.java_version as Integer)
|
||||||
|
archiveClassifier = "downgraded-${rootProject.java_version}"
|
||||||
|
}
|
||||||
|
task apiDowngrade(type: xyz.wagyourtail.jvmdg.gradle.task.ShadeJar) {
|
||||||
|
inputFile = jarDowngrade.archiveFile
|
||||||
|
downgradeTo = JavaVersion.toVersion(rootProject.java_version as Integer)
|
||||||
|
archiveClassifier = "downgraded-${rootProject.java_version}-shaded-java-api"
|
||||||
|
}
|
||||||
|
// We're using a custom downgrade task so we disable the original downgrade tasks
|
||||||
|
downgradeJar.enabled = false
|
||||||
|
shadeDowngradedApi.enabled = false
|
||||||
|
|
||||||
|
|
||||||
// Put stuff from gradle.properties into the mod info
|
// Put stuff from gradle.properties into the mod info
|
||||||
@@ -431,11 +443,9 @@ subprojects { p ->
|
|||||||
jar {
|
jar {
|
||||||
from "LICENSE.txt"
|
from "LICENSE.txt"
|
||||||
manifest {
|
manifest {
|
||||||
attributes(
|
attributes 'Implementation-Title': rootProject.mod_name,
|
||||||
'Implementation-Title': rootProject.mod_name,
|
'Implementation-Version': rootProject.mod_version,
|
||||||
'Implementation-Version': rootProject.mod_version,
|
'Main-Class': 'com.seibel.distanthorizons.core.jar.JarMain' // When changing the main of the jar change this line
|
||||||
'Main-Class': 'com.seibel.distanthorizons.core.jar.JarMain' // When changing the main of the jar change this line
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -557,44 +567,6 @@ allprojects { p ->
|
|||||||
// TODO: If neoforged is ever needed, should we use that, or call it a forge mod?
|
// TODO: If neoforged is ever needed, should we use that, or call it a forge mod?
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds some dependencies that are in vanilla but not in core
|
|
||||||
if (p == project(":core")) {
|
|
||||||
OperatingSystem os = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
|
|
||||||
|
|
||||||
// Set the OS lwjgl is using to the current os
|
|
||||||
project.ext.lwjglNatives = "natives-" + os.toFamilyName()
|
|
||||||
|
|
||||||
dependencies { // All of these dependencies are in Vanilla Minecraft, but we need to depend on it as we arent importing Minecraft in the core
|
|
||||||
// Imports most of lwjgl's libraries (well, only the ones that we need)
|
|
||||||
implementation platform("org.lwjgl:lwjgl-bom:${rootProject.lwjgl_version}") // TODO: Use Minecraft's version for lwjgl_version (which changes in nearly every version) instead of a hard defined version for all versions
|
|
||||||
|
|
||||||
// REMEMBER: Dont shadow stuff here, these are just the libs that are included in Minecraft so that the core can use
|
|
||||||
implementation "org.lwjgl:lwjgl"
|
|
||||||
implementation "org.lwjgl:lwjgl-assimp"
|
|
||||||
implementation "org.lwjgl:lwjgl-glfw"
|
|
||||||
implementation "org.lwjgl:lwjgl-openal"
|
|
||||||
implementation "org.lwjgl:lwjgl-opengl"
|
|
||||||
implementation "org.lwjgl:lwjgl-stb"
|
|
||||||
implementation "org.lwjgl:lwjgl-tinyfd"
|
|
||||||
runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
|
|
||||||
runtimeOnly "org.lwjgl:lwjgl-assimp::$lwjglNatives"
|
|
||||||
runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
|
|
||||||
runtimeOnly "org.lwjgl:lwjgl-openal::$lwjglNatives"
|
|
||||||
runtimeOnly "org.lwjgl:lwjgl-opengl::$lwjglNatives"
|
|
||||||
runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
|
|
||||||
runtimeOnly "org.lwjgl:lwjgl-tinyfd::$lwjglNatives"
|
|
||||||
implementation "org.joml:joml:${rootProject.joml_version}"
|
|
||||||
|
|
||||||
|
|
||||||
// Some other dependencies
|
|
||||||
implementation("org.jetbrains:annotations:16.0.2")
|
|
||||||
implementation("com.google.code.findbugs:jsr305:3.0.2")
|
|
||||||
implementation("com.google.common:google-collect:0.5")
|
|
||||||
implementation("com.google.guava:guava:31.1-jre")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
task copyCommonLoaderResources(type: Copy) {
|
task copyCommonLoaderResources(type: Copy) {
|
||||||
from project(":common").file("src/main/resources/${accessWidenerVersion}.distanthorizons.accesswidener")
|
from project(":common").file("src/main/resources/${accessWidenerVersion}.distanthorizons.accesswidener")
|
||||||
into(file(p.file("build/resources/main")))
|
into(file(p.file("build/resources/main")))
|
||||||
@@ -616,16 +588,17 @@ allprojects { p ->
|
|||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
if (isMinecraftSubProject) {
|
if (isMinecraftSubProject) {
|
||||||
options.release = rootProject.java_version as Integer
|
options.release = rootProject.java_version as Integer // Neoforge complains without this
|
||||||
options.compilerArgs += ["-Xplugin:Manifold"]
|
options.compilerArgs += ["-Xplugin:Manifold"]
|
||||||
} else {
|
|
||||||
options.release = 8; // Core & Api should use Java 8 no matter what
|
|
||||||
//options.release = rootProject.java_version as Integer // But if you want to test some stuff, then this can be enabled
|
|
||||||
}
|
}
|
||||||
options.encoding = "UTF-8"
|
options.encoding = "UTF-8"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sets the project's actual Java version (it's recommended to use this over the `options.release` method above)
|
||||||
java {
|
java {
|
||||||
|
sourceCompatibility = rootProject.java_version
|
||||||
|
targetCompatibility = rootProject.java_version
|
||||||
|
|
||||||
withSourcesJar()
|
withSourcesJar()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public abstract class AbstractModInitializer
|
|||||||
LOGGER.info(ModInfo.READABLE_NAME + " Initialized");
|
LOGGER.info(ModInfo.READABLE_NAME + " Initialized");
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
||||||
|
|
||||||
this.subscribeRegisterCommandsEvent(dispatcher -> { this.commandDispatcher = dispatcher; });
|
this.subscribeRegisterCommandsEvent(dispatcher -> this.commandDispatcher = dispatcher);
|
||||||
|
|
||||||
this.subscribeServerStartingEvent(server ->
|
this.subscribeServerStartingEvent(server ->
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -26,6 +26,6 @@ public class DependencySetupDoneCheck
|
|||||||
// TODO move to DependencySetup
|
// TODO move to DependencySetup
|
||||||
public static boolean isDone = false;
|
public static boolean isDone = false;
|
||||||
// TODO why is this here and what is its purpose?
|
// TODO why is this here and what is its purpose?
|
||||||
public static Supplier<Boolean> getIsCurrentThreadDistantGeneratorThread = (() -> { return false; });
|
public static Supplier<Boolean> getIsCurrentThreadDistantGeneratorThread = (() -> false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-26
@@ -102,33 +102,17 @@ public class McObjectConverter
|
|||||||
lodDirections = new EDhDirection[lodDirs.length];
|
lodDirections = new EDhDirection[lodDirs.length];
|
||||||
for (EDhDirection lodDir : lodDirs)
|
for (EDhDirection lodDir : lodDirs)
|
||||||
{
|
{
|
||||||
Direction dir;
|
Direction dir = switch (lodDir.name().toUpperCase()) {
|
||||||
switch (lodDir.name().toUpperCase())
|
case "DOWN" -> Direction.DOWN;
|
||||||
{
|
case "UP" -> Direction.UP;
|
||||||
case "DOWN":
|
case "NORTH" -> Direction.NORTH;
|
||||||
dir = Direction.DOWN;
|
case "SOUTH" -> Direction.SOUTH;
|
||||||
break;
|
case "WEST" -> Direction.WEST;
|
||||||
case "UP":
|
case "EAST" -> Direction.EAST;
|
||||||
dir = Direction.UP;
|
default -> null;
|
||||||
break;
|
};
|
||||||
case "NORTH":
|
|
||||||
dir = Direction.NORTH;
|
|
||||||
break;
|
|
||||||
case "SOUTH":
|
|
||||||
dir = Direction.SOUTH;
|
|
||||||
break;
|
|
||||||
case "WEST":
|
|
||||||
dir = Direction.WEST;
|
|
||||||
break;
|
|
||||||
case "EAST":
|
|
||||||
dir = Direction.EAST;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dir = null;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dir == null)
|
if (dir == null)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Invalid direction on init mapping: " + lodDir);
|
throw new IllegalArgumentException("Invalid direction on init mapping: " + lodDir);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-10
@@ -161,19 +161,17 @@ public class WrapperFactory implements IWrapperFactory
|
|||||||
// correct number of parameters from the API
|
// correct number of parameters from the API
|
||||||
|
|
||||||
// chunk
|
// chunk
|
||||||
if (!(objectArray[0] instanceof ChunkAccess))
|
if (!(objectArray[0] instanceof ChunkAccess chunk))
|
||||||
{
|
{
|
||||||
throw new ClassCastException(createChunkWrapperErrorMessage(objectArray));
|
throw new ClassCastException(createChunkWrapperErrorMessage(objectArray));
|
||||||
}
|
}
|
||||||
ChunkAccess chunk = (ChunkAccess) objectArray[0];
|
|
||||||
|
|
||||||
// level / light source
|
// level / light source
|
||||||
if (!(objectArray[1] instanceof Level))
|
if (!(objectArray[1] instanceof Level level))
|
||||||
{
|
{
|
||||||
throw new ClassCastException(createChunkWrapperErrorMessage(objectArray));
|
throw new ClassCastException(createChunkWrapperErrorMessage(objectArray));
|
||||||
}
|
}
|
||||||
// the level is needed for the DH level wrapper...
|
// the level is needed for the DH level wrapper...
|
||||||
Level level = (Level) objectArray[1];
|
|
||||||
// ...the LevelReader is needed for chunk lighting
|
// ...the LevelReader is needed for chunk lighting
|
||||||
LevelReader lightSource = level;
|
LevelReader lightSource = level;
|
||||||
|
|
||||||
@@ -245,11 +243,10 @@ public class WrapperFactory implements IWrapperFactory
|
|||||||
public IDhApiBiomeWrapper getBiomeWrapper(Object[] objectArray, IDhApiLevelWrapper levelWrapper)
|
public IDhApiBiomeWrapper getBiomeWrapper(Object[] objectArray, IDhApiLevelWrapper levelWrapper)
|
||||||
{
|
{
|
||||||
// confirm the API level wrapper is also a Core wrapper
|
// confirm the API level wrapper is also a Core wrapper
|
||||||
if (!(levelWrapper instanceof ILevelWrapper))
|
if (!(levelWrapper instanceof ILevelWrapper coreLevelWrapper))
|
||||||
{
|
{
|
||||||
throw new ClassCastException("Invalid ["+IDhApiLevelWrapper.class.getSimpleName()+"] value given. Level wrapper object must be one given by the DH API (it can't be a custom implementation), specifically of type ["+ILevelWrapper.class.getName()+"].");
|
throw new ClassCastException("Invalid ["+IDhApiLevelWrapper.class.getSimpleName()+"] value given. Level wrapper object must be one given by the DH API (it can't be a custom implementation), specifically of type ["+ILevelWrapper.class.getName()+"].");
|
||||||
}
|
}
|
||||||
ILevelWrapper coreLevelWrapper = (ILevelWrapper) levelWrapper;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -304,11 +301,10 @@ public class WrapperFactory implements IWrapperFactory
|
|||||||
public IDhApiBlockStateWrapper getBlockStateWrapper(Object[] objectArray, IDhApiLevelWrapper levelWrapper)
|
public IDhApiBlockStateWrapper getBlockStateWrapper(Object[] objectArray, IDhApiLevelWrapper levelWrapper)
|
||||||
{
|
{
|
||||||
// confirm the API level wrapper is also a Core wrapper
|
// confirm the API level wrapper is also a Core wrapper
|
||||||
if (!(levelWrapper instanceof ILevelWrapper))
|
if (!(levelWrapper instanceof ILevelWrapper coreLevelWrapper))
|
||||||
{
|
{
|
||||||
throw new ClassCastException("Invalid ["+IDhApiLevelWrapper.class.getSimpleName()+"] value given. Level wrapper object must be one given by the DH API (it can't be a custom implementation), specifically of type ["+ILevelWrapper.class.getName()+"].");
|
throw new ClassCastException("Invalid ["+IDhApiLevelWrapper.class.getSimpleName()+"] value given. Level wrapper object must be one given by the DH API (it can't be a custom implementation), specifically of type ["+ILevelWrapper.class.getName()+"].");
|
||||||
}
|
}
|
||||||
ILevelWrapper coreLevelWrapper = (ILevelWrapper) levelWrapper;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -317,12 +313,11 @@ public class WrapperFactory implements IWrapperFactory
|
|||||||
{
|
{
|
||||||
throw new ClassCastException(createBlockStateWrapperErrorMessage(objectArray));
|
throw new ClassCastException(createBlockStateWrapperErrorMessage(objectArray));
|
||||||
}
|
}
|
||||||
if (!(objectArray[0] instanceof BlockState))
|
if (!(objectArray[0] instanceof BlockState blockState))
|
||||||
{
|
{
|
||||||
throw new ClassCastException(createBlockStateWrapperErrorMessage(objectArray));
|
throw new ClassCastException(createBlockStateWrapperErrorMessage(objectArray));
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockState blockState = (BlockState) objectArray[0];
|
|
||||||
return BlockStateWrapper.fromBlockState(blockState, coreLevelWrapper);
|
return BlockStateWrapper.fromBlockState(blockState, coreLevelWrapper);
|
||||||
#else
|
#else
|
||||||
// See preprocessor comment in createChunkWrapper() for full documentation (not a typo, check createChunkWrapper()'s else statement for full documentation)
|
// See preprocessor comment in createChunkWrapper() for full documentation (not a typo, check createChunkWrapper()'s else statement for full documentation)
|
||||||
|
|||||||
+1
-1
@@ -266,7 +266,7 @@ public class BiomeWrapper implements IBiomeWrapper
|
|||||||
}
|
}
|
||||||
return EMPTY_WRAPPER;
|
return EMPTY_WRAPPER;
|
||||||
}
|
}
|
||||||
else if (resourceLocationString.trim().isEmpty() || resourceLocationString.equals(""))
|
else if (resourceLocationString.trim().isEmpty() || resourceLocationString.isEmpty())
|
||||||
{
|
{
|
||||||
LOGGER.warn("Null biome string deserialized.");
|
LOGGER.warn("Null biome string deserialized.");
|
||||||
return EMPTY_WRAPPER;
|
return EMPTY_WRAPPER;
|
||||||
|
|||||||
+3
-2
@@ -34,6 +34,7 @@ import net.minecraft.world.level.block.Block;
|
|||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.block.SoundType;
|
import net.minecraft.world.level.block.SoundType;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.state.properties.Property;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@@ -461,7 +462,7 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
|||||||
// we need the final string for the concurrent hash map later
|
// we need the final string for the concurrent hash map later
|
||||||
final String finalResourceStateString = resourceStateString;
|
final String finalResourceStateString = resourceStateString;
|
||||||
|
|
||||||
if (finalResourceStateString.equals(AIR_STRING) || finalResourceStateString.equals("")) // the empty string shouldn't normally happen, but just in case
|
if (finalResourceStateString.equals(AIR_STRING) || finalResourceStateString.isEmpty()) // the empty string shouldn't normally happen, but just in case
|
||||||
{
|
{
|
||||||
return AIR;
|
return AIR;
|
||||||
}
|
}
|
||||||
@@ -602,7 +603,7 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
|||||||
|
|
||||||
// alphabetically sort the list so they are always in the same order
|
// alphabetically sort the list so they are always in the same order
|
||||||
List<net.minecraft.world.level.block.state.properties.Property<?>> sortedBlockPropteryList = new ArrayList<>(blockPropertyCollection);
|
List<net.minecraft.world.level.block.state.properties.Property<?>> sortedBlockPropteryList = new ArrayList<>(blockPropertyCollection);
|
||||||
sortedBlockPropteryList.sort((a, b) -> a.getName().compareTo(b.getName()));
|
sortedBlockPropteryList.sort(Comparator.comparing(Property::getName));
|
||||||
|
|
||||||
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
|||||||
+4
-4
@@ -312,12 +312,12 @@ public class ClientBlockStateCache
|
|||||||
}
|
}
|
||||||
if (quads != null && !quads.isEmpty())
|
if (quads != null && !quads.isEmpty())
|
||||||
{
|
{
|
||||||
needPostTinting = quads.get(0).isTinted();
|
needPostTinting = quads.getFirst().isTinted();
|
||||||
needShade = quads.get(0).isShade();
|
needShade = quads.getFirst().isShade();
|
||||||
tintIndex = quads.get(0).getTintIndex();
|
tintIndex = quads.getFirst().getTintIndex();
|
||||||
baseColor = calculateColorFromTexture(
|
baseColor = calculateColorFromTexture(
|
||||||
#if MC_VER < MC_1_17_1 quads.get(0).sprite,
|
#if MC_VER < MC_1_17_1 quads.get(0).sprite,
|
||||||
#else quads.get(0).getSprite(), #endif
|
#else quads.getFirst().getSprite(), #endif
|
||||||
ColorMode.getColorMode(blockState.getBlock()));
|
ColorMode.getColorMode(blockState.getBlock()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
+4
-8
@@ -83,7 +83,7 @@ public class ChunkWrapper implements IChunkWrapper
|
|||||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
||||||
|
|
||||||
/** can be used for interactions with the underlying chunk where creating new BlockPos objects could cause issues for the garbage collector. */
|
/** can be used for interactions with the underlying chunk where creating new BlockPos objects could cause issues for the garbage collector. */
|
||||||
private static final ThreadLocal<BlockPos.MutableBlockPos> MUTABLE_BLOCK_POS_REF = ThreadLocal.withInitial(() -> new BlockPos.MutableBlockPos());
|
private static final ThreadLocal<BlockPos.MutableBlockPos> MUTABLE_BLOCK_POS_REF = ThreadLocal.withInitial(BlockPos.MutableBlockPos::new);
|
||||||
|
|
||||||
|
|
||||||
private final ChunkAccess chunk;
|
private final ChunkAccess chunk;
|
||||||
@@ -345,9 +345,8 @@ public class ChunkWrapper implements IChunkWrapper
|
|||||||
#if MC_VER == MC_1_16_5 || MC_VER == MC_1_17_1
|
#if MC_VER == MC_1_16_5 || MC_VER == MC_1_17_1
|
||||||
return false; // MC's lighting engine doesn't work consistently enough to trust for 1.16 or 1.17
|
return false; // MC's lighting engine doesn't work consistently enough to trust for 1.16 or 1.17
|
||||||
#else
|
#else
|
||||||
if (this.chunk instanceof LevelChunk)
|
if (this.chunk instanceof LevelChunk levelChunk)
|
||||||
{
|
{
|
||||||
LevelChunk levelChunk = (LevelChunk) this.chunk;
|
|
||||||
if (levelChunk.getLevel() instanceof ClientLevel)
|
if (levelChunk.getLevel() instanceof ClientLevel)
|
||||||
{
|
{
|
||||||
// connected to a server
|
// connected to a server
|
||||||
@@ -474,9 +473,7 @@ public class ChunkWrapper implements IChunkWrapper
|
|||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
this.chunk.findBlockLightSources((blockPos, blockState) ->
|
this.chunk.findBlockLightSources((blockPos, blockState) ->
|
||||||
{
|
this.blockLightPosList.add(new DhBlockPos(blockPos.getX(), blockPos.getY(), blockPos.getZ())));
|
||||||
this.blockLightPosList.add(new DhBlockPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()));
|
|
||||||
});
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -507,9 +504,8 @@ public class ChunkWrapper implements IChunkWrapper
|
|||||||
/** Should be called after client light updates are triggered. */
|
/** Should be called after client light updates are triggered. */
|
||||||
private void updateIsClientLightingCorrect()
|
private void updateIsClientLightingCorrect()
|
||||||
{
|
{
|
||||||
if (this.chunk instanceof LevelChunk && ((LevelChunk) this.chunk).getLevel() instanceof ClientLevel)
|
if (this.chunk instanceof LevelChunk levelChunk && ((LevelChunk) this.chunk).getLevel() instanceof ClientLevel)
|
||||||
{
|
{
|
||||||
LevelChunk levelChunk = (LevelChunk) this.chunk;
|
|
||||||
ClientChunkCache clientChunkCache = ((ClientLevel) levelChunk.getLevel()).getChunkSource();
|
ClientChunkCache clientChunkCache = ((ClientLevel) levelChunk.getLevel()).getChunkSource();
|
||||||
this.isMcClientLightingCorrect = clientChunkCache.getChunkForLighting(this.chunk.getPos().x, this.chunk.getPos().z) != null &&
|
this.isMcClientLightingCorrect = clientChunkCache.getChunkForLighting(this.chunk.getPos().x, this.chunk.getPos().z) != null &&
|
||||||
#if MC_VER <= MC_1_17_1
|
#if MC_VER <= MC_1_17_1
|
||||||
|
|||||||
+6
-8
@@ -145,9 +145,9 @@ public class ClassicConfigGUI
|
|||||||
case 0:
|
case 0:
|
||||||
((EntryInfo) info.guiValue).error = null; break;
|
((EntryInfo) info.guiValue).error = null; break;
|
||||||
case -1:
|
case -1:
|
||||||
((EntryInfo) info.guiValue).error = new AbstractMap.SimpleEntry<>(editBox, TextOrTranslatable("§cMinimum length is " + ((ConfigEntry) info).getMin())); break;
|
((EntryInfo) info.guiValue).error = new AbstractMap.SimpleEntry<>(editBox, TextOrTranslatable("§cMinimum length is " + ((ConfigEntry<?>) info).getMin())); break;
|
||||||
case 1:
|
case 1:
|
||||||
((EntryInfo) info.guiValue).error = new AbstractMap.SimpleEntry<>(editBox, TextOrTranslatable("§cMaximum length is " + ((ConfigEntry) info).getMax())); break;
|
((EntryInfo) info.guiValue).error = new AbstractMap.SimpleEntry<>(editBox, TextOrTranslatable("§cMaximum length is " + ((ConfigEntry<?>) info).getMax())); break;
|
||||||
case 2:
|
case 2:
|
||||||
((EntryInfo) info.guiValue).error = new AbstractMap.SimpleEntry<>(editBox, TextOrTranslatable("§cValue is invalid")); break;
|
((EntryInfo) info.guiValue).error = new AbstractMap.SimpleEntry<>(editBox, TextOrTranslatable("§cValue is invalid")); break;
|
||||||
}
|
}
|
||||||
@@ -235,7 +235,7 @@ public class ClassicConfigGUI
|
|||||||
ConfigBase.INSTANCE.configFileINSTANCE.saveToFile();
|
ConfigBase.INSTANCE.configFileINSTANCE.saveToFile();
|
||||||
Objects.requireNonNull(this.minecraft).setScreen(this.parent);
|
Objects.requireNonNull(this.minecraft).setScreen(this.parent);
|
||||||
|
|
||||||
CONFIG_CORE_INTERFACE.onScreenChangeListenerList.forEach((listener) -> listener.run());
|
CONFIG_CORE_INTERFACE.onScreenChangeListenerList.forEach(Runnable::run);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -319,7 +319,7 @@ public class ClassicConfigGUI
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_CORE_INTERFACE.onScreenChangeListenerList.forEach((listener) -> listener.run());
|
CONFIG_CORE_INTERFACE.onScreenChangeListenerList.forEach(Runnable::run);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,7 +332,7 @@ public class ClassicConfigGUI
|
|||||||
if (ConfigEntry.class.isAssignableFrom(info.getClass()))
|
if (ConfigEntry.class.isAssignableFrom(info.getClass()))
|
||||||
{
|
{
|
||||||
Button.OnPress btnAction = button -> {
|
Button.OnPress btnAction = button -> {
|
||||||
((ConfigEntry) info).uiSetWithoutSaving(((ConfigEntry) info).getDefaultValue());
|
((ConfigEntry) info).uiSetWithoutSaving(((ConfigEntry<?>) info).getDefaultValue());
|
||||||
((EntryInfo) info.guiValue).index = 0;
|
((EntryInfo) info.guiValue).index = 0;
|
||||||
this.reload = true;
|
this.reload = true;
|
||||||
Objects.requireNonNull(minecraft).setScreen(this);
|
Objects.requireNonNull(minecraft).setScreen(this);
|
||||||
@@ -376,9 +376,7 @@ public class ClassicConfigGUI
|
|||||||
}
|
}
|
||||||
if (ConfigUIButton.class.isAssignableFrom(info.getClass()))
|
if (ConfigUIButton.class.isAssignableFrom(info.getClass()))
|
||||||
{
|
{
|
||||||
Button widget = MakeBtn(name, this.width / 2 - 100, this.height - 28, 100 * 2, 20, (button -> {
|
Button widget = MakeBtn(name, this.width / 2 - 100, this.height - 28, 100 * 2, 20, (button -> ((ConfigUIButton) info).runAction()));
|
||||||
((ConfigUIButton) info).runAction();
|
|
||||||
}));
|
|
||||||
this.list.addButton(widget, null, null, null);
|
this.list.addButton(widget, null, null, null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-10
@@ -25,19 +25,18 @@ public class GetConfigScreen
|
|||||||
// This shouldn't be here, but I need a way to test it after Minecraft inits its assets
|
// This shouldn't be here, but I need a way to test it after Minecraft inits its assets
|
||||||
//System.out.println(ConfigBase.INSTANCE.generateLang(false, true));
|
//System.out.println(ConfigBase.INSTANCE.generateLang(false, true));
|
||||||
|
|
||||||
switch (useScreen)
|
return switch (useScreen)
|
||||||
{
|
{
|
||||||
case Classic:
|
case Classic -> ClassicConfigGUI.getScreen(ConfigBase.INSTANCE, parent, "client");
|
||||||
return ClassicConfigGUI.getScreen(ConfigBase.INSTANCE, parent, "client");
|
case OpenGL ->
|
||||||
case OpenGL:
|
{
|
||||||
MinecraftScreen.getScreen(parent, new OpenGLConfigScreen(), ModInfo.ID + ".title");
|
MinecraftScreen.getScreen(parent, new OpenGLConfigScreen(), ModInfo.ID + ".title");
|
||||||
return null;
|
yield null;
|
||||||
|
}
|
||||||
// case JavaFX -> MinecraftScreen.getScreen(parent, new JavaScreenHandlerScreen(new JavaScreenHandlerScreen.ExampleScreen()), ModInfo.ID + ".title");
|
// case JavaFX -> MinecraftScreen.getScreen(parent, new JavaScreenHandlerScreen(new JavaScreenHandlerScreen.ExampleScreen()), ModInfo.ID + ".title");
|
||||||
case JavaFX:
|
case JavaFX -> MinecraftScreen.getScreen(parent, new JavaScreenHandlerScreen(new ConfigScreen()), ModInfo.ID + ".title");
|
||||||
return MinecraftScreen.getScreen(parent, new JavaScreenHandlerScreen(new ConfigScreen()), ModInfo.ID + ".title");
|
default -> throw new IllegalArgumentException("No config screen implementation defined for [" + useScreen + "].");
|
||||||
default:
|
};
|
||||||
throw new IllegalArgumentException("No config screen implementation defined for ["+useScreen+"].");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+1
-3
@@ -134,9 +134,7 @@ public class ChangelogScreen extends DhScreen
|
|||||||
|
|
||||||
|
|
||||||
this.addBtn( // Close
|
this.addBtn( // Close
|
||||||
MakeBtn(Translatable(ModInfo.ID + ".general.back"), 5, this.height - 25, 100, 20, (btn) -> {
|
MakeBtn(Translatable(ModInfo.ID + ".general.back"), 5, this.height - 25, 100, 20, (btn) -> this.onClose())
|
||||||
this.onClose();
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -135,9 +135,7 @@ public class UpdateModScreen extends DhScreen
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
this.addBtn( // Later (not now)
|
this.addBtn( // Later (not now)
|
||||||
MakeBtn(Translatable(ModInfo.ID + ".updater.later"), this.width / 2 + 2, this.height / 2 + 70, 100, 20, (btn) -> {
|
MakeBtn(Translatable(ModInfo.ID + ".updater.later"), this.width / 2 + 2, this.height / 2 + 70, 100, 20, (btn) -> this.onClose())
|
||||||
this.onClose();
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
this.addBtn( // Never
|
this.addBtn( // Never
|
||||||
MakeBtn(Translatable(ModInfo.ID + ".updater.never"), this.width / 2 - 102, this.height / 2 + 70, 100, 20, (btn) -> {
|
MakeBtn(Translatable(ModInfo.ID + ".updater.never"), this.width / 2 - 102, this.height / 2 + 70, 100, 20, (btn) -> {
|
||||||
|
|||||||
+7
-15
@@ -127,20 +127,12 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra
|
|||||||
}
|
}
|
||||||
|
|
||||||
case ENABLED:
|
case ENABLED:
|
||||||
switch (lodDirection)
|
return switch (lodDirection) {
|
||||||
{
|
case DOWN -> 0.5F;
|
||||||
case DOWN:
|
default -> 1.0F;
|
||||||
return 0.5F;
|
case NORTH, SOUTH -> 0.8F;
|
||||||
default:
|
case WEST, EAST -> 0.6F;
|
||||||
case UP:
|
};
|
||||||
return 1.0F;
|
|
||||||
case NORTH:
|
|
||||||
case SOUTH:
|
|
||||||
return 0.8F;
|
|
||||||
case WEST:
|
|
||||||
case EAST:
|
|
||||||
return 0.6F;
|
|
||||||
}
|
|
||||||
|
|
||||||
case DISABLED:
|
case DISABLED:
|
||||||
return 1.0F;
|
return 1.0F;
|
||||||
@@ -250,7 +242,7 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra
|
|||||||
@Override
|
@Override
|
||||||
public ArrayList<ILevelWrapper> getAllServerWorlds()
|
public ArrayList<ILevelWrapper> getAllServerWorlds()
|
||||||
{
|
{
|
||||||
ArrayList<ILevelWrapper> worlds = new ArrayList<ILevelWrapper>();
|
ArrayList<ILevelWrapper> worlds = new ArrayList<>();
|
||||||
|
|
||||||
Iterable<ServerLevel> serverWorlds = MINECRAFT.getSingleplayerServer().getAllLevels();
|
Iterable<ServerLevel> serverWorlds = MINECRAFT.getSingleplayerServer().getAllLevels();
|
||||||
for (ServerLevel world : serverWorlds)
|
for (ServerLevel world : serverWorlds)
|
||||||
|
|||||||
+2
-3
@@ -147,7 +147,7 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv
|
|||||||
if (index == -1) continue;
|
if (index == -1) continue;
|
||||||
times.get(index).add(e.timeNs);
|
times.get(index).add(e.timeNs);
|
||||||
}
|
}
|
||||||
times.get(0).add(event.getTotalTimeNs());
|
times.getFirst().add(event.getTotalTimeNs());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString()
|
public String toString()
|
||||||
@@ -653,9 +653,8 @@ public final class BatchGenerationEnvironment extends AbstractBatchGenerationEnv
|
|||||||
chunksToGenerate.forEach((chunkWrapper) ->
|
chunksToGenerate.forEach((chunkWrapper) ->
|
||||||
{
|
{
|
||||||
ChunkAccess chunk = chunkWrapper.getChunk();
|
ChunkAccess chunk = chunkWrapper.getChunk();
|
||||||
if (chunk instanceof ProtoChunk)
|
if (chunk instanceof ProtoChunk protoChunk)
|
||||||
{
|
{
|
||||||
ProtoChunk protoChunk = ((ProtoChunk) chunk);
|
|
||||||
|
|
||||||
protoChunk.setLightEngine(region.getLightEngine());
|
protoChunk.setLightEngine(region.getLightEngine());
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-5
@@ -294,7 +294,7 @@ public class ChunkLoader
|
|||||||
#else
|
#else
|
||||||
.getOrThrow((message) -> (RuntimeException) LOGGER.errorAndThrow(message, null))
|
.getOrThrow((message) -> (RuntimeException) LOGGER.errorAndThrow(message, null))
|
||||||
#endif
|
#endif
|
||||||
: new PalettedContainer<BlockState>(Block.BLOCK_STATE_REGISTRY, Blocks.AIR.defaultBlockState(), PalettedContainer.Strategy.SECTION_STATES);
|
: new PalettedContainer<>(Block.BLOCK_STATE_REGISTRY, Blocks.AIR.defaultBlockState(), PalettedContainer.Strategy.SECTION_STATES);
|
||||||
|
|
||||||
#if MC_VER < MC_1_18_2
|
#if MC_VER < MC_1_18_2
|
||||||
biomeContainer = tagSection.contains("biomes", 10)
|
biomeContainer = tagSection.contains("biomes", 10)
|
||||||
@@ -309,7 +309,7 @@ public class ChunkLoader
|
|||||||
#else
|
#else
|
||||||
.getOrThrow((message) -> (RuntimeException) LOGGER.errorAndThrow(message, null))
|
.getOrThrow((message) -> (RuntimeException) LOGGER.errorAndThrow(message, null))
|
||||||
#endif
|
#endif
|
||||||
: new PalettedContainer<Holder<Biome>>(biomes.asHolderIdMap(), biomes.getHolderOrThrow(Biomes.PLAINS), PalettedContainer.Strategy.SECTION_BIOMES);
|
: new PalettedContainer<>(biomes.asHolderIdMap(), biomes.getHolderOrThrow(Biomes.PLAINS), PalettedContainer.Strategy.SECTION_BIOMES);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if MC_VER < MC_1_20_1
|
#if MC_VER < MC_1_20_1
|
||||||
@@ -434,7 +434,7 @@ public class ChunkLoader
|
|||||||
for (int sectionIndex = 0; sectionIndex < chunkSectionListTag.size(); sectionIndex++)
|
for (int sectionIndex = 0; sectionIndex < chunkSectionListTag.size(); sectionIndex++)
|
||||||
{
|
{
|
||||||
Tag chunkSectionTag = chunkSectionListTag.get(sectionIndex);
|
Tag chunkSectionTag = chunkSectionListTag.get(sectionIndex);
|
||||||
if (!(chunkSectionTag instanceof CompoundTag))
|
if (!(chunkSectionTag instanceof CompoundTag chunkSectionCompoundTag))
|
||||||
{
|
{
|
||||||
if (!lightingSectionErrorLogged)
|
if (!lightingSectionErrorLogged)
|
||||||
{
|
{
|
||||||
@@ -443,10 +443,9 @@ public class ChunkLoader
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
CompoundTag chunkSectionCompoundTag = (CompoundTag) chunkSectionTag;
|
|
||||||
|
|
||||||
|
|
||||||
// if null all lights = 0
|
// if null all lights = 0
|
||||||
byte[] blockLightNibbleArray = chunkSectionCompoundTag.getByteArray("BlockLight");
|
byte[] blockLightNibbleArray = chunkSectionCompoundTag.getByteArray("BlockLight");
|
||||||
byte[] skyLightNibbleArray = chunkSectionCompoundTag.getByteArray("SkyLight");
|
byte[] skyLightNibbleArray = chunkSectionCompoundTag.getByteArray("SkyLight");
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -84,7 +84,7 @@ public class DhLitWorldGenRegion extends WorldGenRegion
|
|||||||
|
|
||||||
private final ChunkPos firstPos;
|
private final ChunkPos firstPos;
|
||||||
private final List<ChunkAccess> cache;
|
private final List<ChunkAccess> cache;
|
||||||
private final Long2ObjectOpenHashMap<ChunkAccess> chunkMap = new Long2ObjectOpenHashMap<ChunkAccess>();
|
private final Long2ObjectOpenHashMap<ChunkAccess> chunkMap = new Long2ObjectOpenHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Present to reduce the chance that we accidentally break underlying MC code that isn't thread safe,
|
* Present to reduce the chance that we accidentally break underlying MC code that isn't thread safe,
|
||||||
@@ -142,7 +142,7 @@ public class DhLitWorldGenRegion extends WorldGenRegion
|
|||||||
centerChunk);
|
centerChunk);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
this.firstPos = chunkList.get(0).getPos();
|
this.firstPos = chunkList.getFirst().getPos();
|
||||||
this.generator = generator;
|
this.generator = generator;
|
||||||
this.lightEngine = lightEngine;
|
this.lightEngine = lightEngine;
|
||||||
this.writeRadius = writeRadius;
|
this.writeRadius = writeRadius;
|
||||||
|
|||||||
+1
-3
@@ -231,11 +231,9 @@ public class WorldGenStructFeatManager extends #if MC_VER < MC_1_19_2 StructureF
|
|||||||
Map<Structure, LongSet> map = chunk.getAllReferences();
|
Map<Structure, LongSet> map = chunk.getAllReferences();
|
||||||
|
|
||||||
ImmutableList.Builder<StructureStart> builder = ImmutableList.builder();
|
ImmutableList.Builder<StructureStart> builder = ImmutableList.builder();
|
||||||
Iterator<Map.Entry<Structure, LongSet>> var5 = map.entrySet().iterator();
|
|
||||||
|
|
||||||
while (var5.hasNext())
|
for (Map.Entry<Structure, LongSet> entry : map.entrySet())
|
||||||
{
|
{
|
||||||
Map.Entry<Structure, LongSet> entry = var5.next();
|
|
||||||
Structure configuredStructureFeature = entry.getKey();
|
Structure configuredStructureFeature = entry.getKey();
|
||||||
if (predicate.test(configuredStructureFeature))
|
if (predicate.test(configuredStructureFeature))
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -54,7 +54,7 @@ public final class StepStructureReference
|
|||||||
List<ChunkWrapper> chunkWrappers)
|
List<ChunkWrapper> chunkWrappers)
|
||||||
{
|
{
|
||||||
|
|
||||||
ArrayList<ChunkAccess> chunksToDo = new ArrayList<ChunkAccess>();
|
ArrayList<ChunkAccess> chunksToDo = new ArrayList<>();
|
||||||
|
|
||||||
for (ChunkWrapper chunkWrapper : chunkWrappers)
|
for (ChunkWrapper chunkWrapper : chunkWrappers)
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
Submodule coreSubProjects updated: d38711ca4b...f767215ff0
+2
-2
@@ -23,8 +23,8 @@ loom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
remapJar {
|
remapJar {
|
||||||
inputFile = shadowJar.archiveFile
|
inputFile = shadeDowngradedApi.archiveFile
|
||||||
dependsOn shadowJar
|
dependsOn shadeDowngradedApi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
// tick events //
|
// tick events //
|
||||||
//=============//
|
//=============//
|
||||||
|
|
||||||
ClientTickEvents.START_CLIENT_TICK.register((client) -> { ClientApi.INSTANCE.clientTickEvent(); });
|
ClientTickEvents.START_CLIENT_TICK.register((client) -> ClientApi.INSTANCE.clientTickEvent());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -98,7 +98,7 @@ public class MixinMinecraft
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
versionId = GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha");
|
versionId = GitlabGetter.INSTANCE.projectPipelines.getFirst().get("sha");
|
||||||
}
|
}
|
||||||
|
|
||||||
Minecraft.getInstance().setScreen(new UpdateModScreen(
|
Minecraft.getInstance().setScreen(new UpdateModScreen(
|
||||||
|
|||||||
+3
-3
@@ -104,14 +104,14 @@ public class MixinOptionsScreen extends Screen
|
|||||||
|
|
||||||
// add the button to the correct location in the UI
|
// add the button to the correct location in the UI
|
||||||
// TODO is there a better way to do this instead of using access transformers to inject into the exact UI elements?
|
// TODO is there a better way to do this instead of using access transformers to inject into the exact UI elements?
|
||||||
LinearLayout layout = (LinearLayout) this.layout.headerFrame.children.get(0).child;
|
LinearLayout layout = (LinearLayout) this.layout.headerFrame.children.getFirst().child;
|
||||||
|
|
||||||
// determine how wide the other option buttons are so we can put our botton to the left of them all
|
// determine how wide the other option buttons are so we can put our botton to the left of them all
|
||||||
AtomicInteger width = new AtomicInteger(0);
|
AtomicInteger width = new AtomicInteger(0);
|
||||||
layout.visitChildren(x -> { width.addAndGet(x.getWidth()); });
|
layout.visitChildren(x -> width.addAndGet(x.getWidth()));
|
||||||
width.addAndGet(-10); // padding between the DH button and the FOV slider
|
width.addAndGet(-10); // padding between the DH button and the FOV slider
|
||||||
|
|
||||||
layout.wrapped.addChild(this.getOptionsButton(), 1, 2, (settings) -> { settings.paddingLeft(width.get() * -1); });
|
layout.wrapped.addChild(this.getOptionsButton(), 1, 2, (settings) -> settings.paddingLeft(width.get() * -1));
|
||||||
layout.arrangeElements();
|
layout.arrangeElements();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ public class ModMenuIntegration implements ModMenuApi
|
|||||||
@Override
|
@Override
|
||||||
public ConfigScreenFactory<?> getModConfigScreenFactory()
|
public ConfigScreenFactory<?> getModConfigScreenFactory()
|
||||||
{
|
{
|
||||||
return parent -> GetConfigScreen.getScreen(parent);
|
return GetConfigScreen::getScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ public class ModChecker implements IModChecker
|
|||||||
@Override
|
@Override
|
||||||
public File modLocation(String modid)
|
public File modLocation(String modid)
|
||||||
{
|
{
|
||||||
return new File(FabricLoader.getInstance().getModContainer(modid).get().getOrigin().getPaths().get(0).toUri());
|
return new File(FabricLoader.getInstance().getModContainer(modid).get().getOrigin().getPaths().getFirst().toUri());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-5
@@ -69,11 +69,9 @@ public class SodiumAccessor implements ISodiumAccessor
|
|||||||
|
|
||||||
#if MC_VER >= MC_1_20_1
|
#if MC_VER >= MC_1_20_1
|
||||||
// TODO: This is just a tmp solution, use a proper solution later
|
// TODO: This is just a tmp solution, use a proper solution later
|
||||||
return MC_RENDER.getMaximumRenderedChunks().stream().filter((DhChunkPos chunk) -> {
|
return MC_RENDER.getMaximumRenderedChunks().stream().filter((DhChunkPos chunk) -> (renderer.isBoxVisible(
|
||||||
return (renderer.isBoxVisible(
|
chunk.getMinBlockX() + 1, height.getMinBuildHeight() + 1, chunk.getMinBlockZ() + 1,
|
||||||
chunk.getMinBlockX() + 1, height.getMinBuildHeight() + 1, chunk.getMinBlockZ() + 1,
|
chunk.getMinBlockX() + 15, height.getMaxBuildHeight() - 1, chunk.getMinBlockZ() + 15))).collect(Collectors.toCollection(HashSet::new));
|
||||||
chunk.getMinBlockX() + 15, height.getMaxBuildHeight() - 1, chunk.getMinBlockZ() + 15));
|
|
||||||
}).collect(Collectors.toCollection(HashSet::new));
|
|
||||||
#elif MC_VER >= MC_1_18_2
|
#elif MC_VER >= MC_1_18_2
|
||||||
// 0b11 = Lighted chunk & loaded chunk
|
// 0b11 = Lighted chunk & loaded chunk
|
||||||
return renderer.getChunkTracker().getChunks(0b00).filter(
|
return renderer.getChunkTracker().getChunks(0b00).filter(
|
||||||
|
|||||||
+2
-2
@@ -51,8 +51,8 @@ loom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
remapJar {
|
remapJar {
|
||||||
inputFile = shadowJar.archiveFile
|
inputFile = shadeDowngradedApi.archiveFile
|
||||||
dependsOn shadowJar
|
dependsOn shadeDowngradedApi
|
||||||
}
|
}
|
||||||
|
|
||||||
def addMod(path, enabled) {
|
def addMod(path, enabled) {
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
+9
-13
@@ -31,7 +31,7 @@ loom {
|
|||||||
setConfigName("NeoForge Client")
|
setConfigName("NeoForge Client")
|
||||||
ideConfigGenerated(true)
|
ideConfigGenerated(true)
|
||||||
runDir("../run")
|
runDir("../run")
|
||||||
//vmArgs("-XX:-OmitStackTraceInFastThrow", minecraftMemoryJavaArg)
|
// vmArgs("-XX:-OmitStackTraceInFastThrow", minecraftMemoryJavaArg)
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
server()
|
server()
|
||||||
@@ -42,7 +42,13 @@ loom {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remapJar {
|
||||||
|
inputFile = apiDowngrade.archiveFile
|
||||||
|
dependsOn apiDowngrade
|
||||||
|
// classifier null
|
||||||
|
|
||||||
|
atAccessWideners.add("distanthorizons.accesswidener")
|
||||||
|
}
|
||||||
|
|
||||||
def addMod(path, enabled) {
|
def addMod(path, enabled) {
|
||||||
if (enabled == "2")
|
if (enabled == "2")
|
||||||
@@ -50,24 +56,21 @@ def addMod(path, enabled) {
|
|||||||
else if (enabled == "1")
|
else if (enabled == "1")
|
||||||
dependencies { modCompileOnly(path) }
|
dependencies { modCompileOnly(path) }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
|
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
|
||||||
mappings loom.layered()
|
mappings loom.layered() {
|
||||||
{
|
|
||||||
// Mojmap mappings
|
// Mojmap mappings
|
||||||
officialMojangMappings()
|
officialMojangMappings()
|
||||||
// Parchment mappings (it adds parameter mappings & javadoc)
|
// Parchment mappings (it adds parameter mappings & javadoc)
|
||||||
parchment("org.parchmentmc.data:parchment-${rootProject.parchment_version}@zip")
|
parchment("org.parchmentmc.data:parchment-${rootProject.parchment_version}@zip")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Neoforge
|
// Neoforge
|
||||||
neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}"
|
neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}"
|
||||||
addMod("curse.maven:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft)
|
addMod("curse.maven:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
task deleteResources(type: Delete) {
|
task deleteResources(type: Delete) {
|
||||||
delete file("build/resources/main")
|
delete file("build/resources/main")
|
||||||
}
|
}
|
||||||
@@ -86,13 +89,6 @@ tasks.named('runClient') {
|
|||||||
finalizedBy(deleteResources)
|
finalizedBy(deleteResources)
|
||||||
}
|
}
|
||||||
|
|
||||||
remapJar {
|
|
||||||
inputFile = shadowJar.archiveFile
|
|
||||||
dependsOn shadowJar
|
|
||||||
|
|
||||||
atAccessWideners.add("distanthorizons.accesswidener")
|
|
||||||
}
|
|
||||||
|
|
||||||
sourcesJar {
|
sourcesJar {
|
||||||
def commonSources = project(":common").sourcesJar
|
def commonSources = project(":common").sourcesJar
|
||||||
dependsOn commonSources
|
dependsOn commonSources
|
||||||
|
|||||||
@@ -129,12 +129,11 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
LOGGER.info("level load");
|
LOGGER.info("level load");
|
||||||
|
|
||||||
LevelAccessor level = event.getLevel();
|
LevelAccessor level = event.getLevel();
|
||||||
if (!(level instanceof ClientLevel))
|
if (!(level instanceof ClientLevel clientLevel))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientLevel clientLevel = (ClientLevel) level;
|
|
||||||
IClientLevelWrapper clientLevelWrapper = ClientLevelWrapper.getWrapper(clientLevel);
|
IClientLevelWrapper clientLevelWrapper = ClientLevelWrapper.getWrapper(clientLevel);
|
||||||
// TODO this causes a crash due to level being set to null somewhere
|
// TODO this causes a crash due to level being set to null somewhere
|
||||||
ClientApi.INSTANCE.clientLevelLoadEvent(clientLevelWrapper);
|
ClientApi.INSTANCE.clientLevelLoadEvent(clientLevelWrapper);
|
||||||
@@ -145,12 +144,11 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
LOGGER.info("level unload");
|
LOGGER.info("level unload");
|
||||||
|
|
||||||
LevelAccessor level = event.getLevel();
|
LevelAccessor level = event.getLevel();
|
||||||
if (!(level instanceof ClientLevel))
|
if (!(level instanceof ClientLevel clientLevel))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientLevel clientLevel = (ClientLevel) level;
|
|
||||||
IClientLevelWrapper clientLevelWrapper = ClientLevelWrapper.getWrapper(clientLevel);
|
IClientLevelWrapper clientLevelWrapper = ClientLevelWrapper.getWrapper(clientLevel);
|
||||||
ClientApi.INSTANCE.clientLevelUnloadEvent(clientLevelWrapper);
|
ClientApi.INSTANCE.clientLevelUnloadEvent(clientLevelWrapper);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class NeoforgeMain extends AbstractModInitializer
|
|||||||
@Override
|
@Override
|
||||||
protected void subscribeRegisterCommandsEvent(Consumer<CommandDispatcher<CommandSourceStack>> eventHandler)
|
protected void subscribeRegisterCommandsEvent(Consumer<CommandDispatcher<CommandSourceStack>> eventHandler)
|
||||||
{
|
{
|
||||||
NeoForge.EVENT_BUS.addListener((RegisterCommandsEvent e) -> { eventHandler.accept(e.getDispatcher()); });
|
NeoForge.EVENT_BUS.addListener((RegisterCommandsEvent e) -> eventHandler.accept(e.getDispatcher()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -100,7 +100,7 @@ public class NeoforgeMain extends AbstractModInitializer
|
|||||||
@Override
|
@Override
|
||||||
protected void subscribeServerStartingEvent(Consumer<MinecraftServer> eventHandler)
|
protected void subscribeServerStartingEvent(Consumer<MinecraftServer> eventHandler)
|
||||||
{
|
{
|
||||||
NeoForge.EVENT_BUS.addListener((ServerStartingEvent e) -> { eventHandler.accept(e.getServer()); });
|
NeoForge.EVENT_BUS.addListener((ServerStartingEvent e) -> eventHandler.accept(e.getServer()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-1
@@ -86,7 +86,7 @@ public class MixinMinecraft
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
versionId = GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha");
|
versionId = GitlabGetter.INSTANCE.projectPipelines.getFirst().get("sha");
|
||||||
}
|
}
|
||||||
|
|
||||||
Minecraft.getInstance().setScreen(new UpdateModScreen(
|
Minecraft.getInstance().setScreen(new UpdateModScreen(
|
||||||
|
|||||||
+3
-3
@@ -104,14 +104,14 @@ public class MixinOptionsScreen extends Screen
|
|||||||
|
|
||||||
// add the button to the correct location in the UI
|
// add the button to the correct location in the UI
|
||||||
// TODO is there a better way to do this instead of using access transformers to inject into the exact UI elements?
|
// TODO is there a better way to do this instead of using access transformers to inject into the exact UI elements?
|
||||||
LinearLayout layout = (LinearLayout) this.layout.headerFrame.children.get(0).child;
|
LinearLayout layout = (LinearLayout) this.layout.headerFrame.children.getFirst().child;
|
||||||
|
|
||||||
// determine how wide the other option buttons are so we can put our botton to the left of them all
|
// determine how wide the other option buttons are so we can put our botton to the left of them all
|
||||||
AtomicInteger width = new AtomicInteger(0);
|
AtomicInteger width = new AtomicInteger(0);
|
||||||
layout.visitChildren(x -> { width.addAndGet(x.getWidth()); });
|
layout.visitChildren(x -> width.addAndGet(x.getWidth()));
|
||||||
width.addAndGet(-10); // padding between the DH button and the FOV slider
|
width.addAndGet(-10); // padding between the DH button and the FOV slider
|
||||||
|
|
||||||
layout.wrapped.addChild(this.getOptionsButton(), 1, 2, (settings) -> { settings.paddingLeft(width.get() * -1); });
|
layout.wrapped.addChild(this.getOptionsButton(), 1, 2, (settings) -> settings.paddingLeft(width.get() * -1));
|
||||||
layout.arrangeElements();
|
layout.arrangeElements();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -33,6 +33,12 @@ pluginManagement {
|
|||||||
name "ParchmentMC"
|
name "ParchmentMC"
|
||||||
url "https://maven.parchmentmc.org"
|
url "https://maven.parchmentmc.org"
|
||||||
}
|
}
|
||||||
|
maven { // Used for downgrading Java versions
|
||||||
|
url "https://maven.wagyourtail.xyz/releases"
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
url "https://maven.wagyourtail.xyz/snapshots"
|
||||||
|
}
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user