Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f69800dfe3 |
+1
-1
@@ -35,7 +35,7 @@ build:
|
|||||||
stage: build
|
stage: build
|
||||||
parallel:
|
parallel:
|
||||||
matrix:
|
matrix:
|
||||||
- MC_VER: ["1.16.5", "1.17.1", "1.18.2", "1.19.2", "1.19.4", "1.20.1", "1.20.2", "1.20.4", "1.20.6", "1.21.1", "1.21.3", "1.21.4", "1.21.5", "1.21.6", "1.21.8"]
|
- MC_VER: ["1.16.5", "1.17.1", "1.18.2", "1.19.2", "1.19.4", "1.20.1", "1.20.2", "1.20.4", "1.20.6", "1.21.1", "1.21.3", "1.21.4", "1.21.5"]
|
||||||
script:
|
script:
|
||||||
# this both runs the unit tests and assembles the code
|
# this both runs the unit tests and assembles the code
|
||||||
- ./gradlew clean -PmcVer="${MC_VER}" -PinfoGitCommit="${CI_COMMIT_SHA}" -PinfoGitBranch="${CI_COMMIT_BRANCH}" -PinfoBuildSource="GitLab CI (${CI_PIPELINE_ID})" --gradle-user-home cache/;
|
- ./gradlew clean -PmcVer="${MC_VER}" -PinfoGitCommit="${CI_COMMIT_SHA}" -PinfoGitBranch="${CI_COMMIT_BRANCH}" -PinfoBuildSource="GitLab CI (${CI_PIPELINE_ID})" --gradle-user-home cache/;
|
||||||
|
|||||||
+1
-5
@@ -245,9 +245,7 @@ subprojects { p ->
|
|||||||
// Note: MC 1.16 uses 8.2.1, and versions after use 8.5.12
|
// Note: MC 1.16 uses 8.2.1, and versions after use 8.5.12
|
||||||
// We cannot relocate this library since we call some MC classes that reference it
|
// We cannot relocate this library since we call some MC classes that reference it
|
||||||
implementation("it.unimi.dsi:fastutil:${rootProject.fastutil_version}")
|
implementation("it.unimi.dsi:fastutil:${rootProject.fastutil_version}")
|
||||||
|
|
||||||
//forgeShadowMe("com.github.luben:zstd-jni:1.5.7-3")
|
|
||||||
//forgeShadowMe("org.apache.commons:commons-compress:1.27.1")
|
|
||||||
|
|
||||||
// Compression
|
// Compression
|
||||||
forgeShadowMe("org.lz4:lz4-java:${rootProject.lz4_version}") // LZ4
|
forgeShadowMe("org.lz4:lz4-java:${rootProject.lz4_version}") // LZ4
|
||||||
@@ -447,8 +445,6 @@ subprojects { p ->
|
|||||||
|
|
||||||
fabric_incompatibility_list : fabric_incompatibility_list,
|
fabric_incompatibility_list : fabric_incompatibility_list,
|
||||||
fabric_recommend_list : fabric_recommend_list,
|
fabric_recommend_list : fabric_recommend_list,
|
||||||
|
|
||||||
neoforge_version_range : neoforge_version_range,
|
|
||||||
]
|
]
|
||||||
|
|
||||||
// replace any properties in the sub-projects with the values defined here
|
// replace any properties in the sub-projects with the values defined here
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ for d in versionProperties/*; do
|
|||||||
echo "==================== Merging $version ===================="
|
echo "==================== Merging $version ===================="
|
||||||
sh gradlew mergeJars -PmcVer=$version
|
sh gradlew mergeJars -PmcVer=$version
|
||||||
if [ $? != 0 ]; then continue; fi
|
if [ $? != 0 ]; then continue; fi
|
||||||
|
|
||||||
echo "==================== Moving jar ===================="
|
echo "==================== Moving jar ===================="
|
||||||
mv build/merged/*.jar buildAllJars/
|
mv Merged/*.jar buildAllJars/
|
||||||
done
|
done
|
||||||
|
|||||||
+3
-6
@@ -15,15 +15,12 @@ for %%f in (versionProperties\*) do (
|
|||||||
@rem Clean out the folders, build it, and merge it
|
@rem Clean out the folders, build it, and merge it
|
||||||
echo ==================== Cleaning workspace to build !version! ====================
|
echo ==================== Cleaning workspace to build !version! ====================
|
||||||
call .\gradlew.bat clean
|
call .\gradlew.bat clean
|
||||||
|
echo ==================== Building !version! ====================
|
||||||
echo ==================== Building !version! ====================
|
|
||||||
call .\gradlew.bat build -PmcVer="!version!"
|
call .\gradlew.bat build -PmcVer="!version!"
|
||||||
|
echo ==================== Merging !version! ====================
|
||||||
echo ==================== Merging !version! ====================
|
|
||||||
call .\gradlew.bat mergeJars -PmcVer="!version!"
|
call .\gradlew.bat mergeJars -PmcVer="!version!"
|
||||||
|
|
||||||
echo ==================== Moving jar ====================
|
echo ==================== Moving jar ====================
|
||||||
move build\merged\*.jar buildAllJars\
|
move Merged\*.jar buildAllJars\
|
||||||
)
|
)
|
||||||
|
|
||||||
endlocal
|
endlocal
|
||||||
|
|||||||
+10
-11
@@ -66,7 +66,7 @@ public abstract class AbstractModInitializer
|
|||||||
{
|
{
|
||||||
DependencySetup.createClientBindings();
|
DependencySetup.createClientBindings();
|
||||||
|
|
||||||
LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " client, firing DhApiBeforeDhInitEvent...");
|
LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " client.");
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
||||||
|
|
||||||
this.startup();
|
this.startup();
|
||||||
@@ -77,12 +77,13 @@ public abstract class AbstractModInitializer
|
|||||||
|
|
||||||
this.initializeModCompat();
|
this.initializeModCompat();
|
||||||
|
|
||||||
|
LOGGER.info(ModInfo.READABLE_NAME + " client Initialized.");
|
||||||
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
||||||
|
|
||||||
// Client uses config for auto-updater, so it's initialized here instead of post-init stage
|
// Client uses config for auto-updater, so it's initialized here instead of post-init stage
|
||||||
this.initConfig();
|
this.initConfig();
|
||||||
logModIncompatibilityWarnings(); // needs to be called after config loading
|
logModIncompatibilityWarnings(); // needs to be called after config loading
|
||||||
|
|
||||||
LOGGER.info(ModInfo.READABLE_NAME + " client Initialized.");
|
|
||||||
|
|
||||||
this.subscribeClientStartedEvent(this::postInit);
|
this.subscribeClientStartedEvent(this::postInit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +91,7 @@ public abstract class AbstractModInitializer
|
|||||||
{
|
{
|
||||||
DependencySetup.createServerBindings();
|
DependencySetup.createServerBindings();
|
||||||
|
|
||||||
LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " server, firing DhApiBeforeDhInitEvent event...");
|
LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " server.");
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
||||||
|
|
||||||
this.startup();
|
this.startup();
|
||||||
@@ -105,7 +106,8 @@ public abstract class AbstractModInitializer
|
|||||||
|
|
||||||
this.initializeModCompat();
|
this.initializeModCompat();
|
||||||
|
|
||||||
LOGGER.info(ModInfo.READABLE_NAME + " server Initialized, adding event subscribers...");
|
LOGGER.info(ModInfo.READABLE_NAME + " server Initialized.");
|
||||||
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
||||||
|
|
||||||
this.subscribeRegisterCommandsEvent(dispatcher -> { this.commandInitializer = new CommandInitializer(dispatcher); });
|
this.subscribeRegisterCommandsEvent(dispatcher -> { this.commandInitializer = new CommandInitializer(dispatcher); });
|
||||||
|
|
||||||
@@ -119,7 +121,7 @@ public abstract class AbstractModInitializer
|
|||||||
|
|
||||||
this.checkForUpdates();
|
this.checkForUpdates();
|
||||||
|
|
||||||
LOGGER.info(ModInfo.READABLE_NAME + " server Initialized at " + server.getServerDirectory());
|
LOGGER.info("Dedicated server initialized at " + server.getServerDirectory());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,12 +183,9 @@ public abstract class AbstractModInitializer
|
|||||||
|
|
||||||
private void postInit()
|
private void postInit()
|
||||||
{
|
{
|
||||||
LOGGER.info("Running Delayed setup...");
|
LOGGER.info("Post-Initializing Mod");
|
||||||
this.runDelayedSetup();
|
this.runDelayedSetup();
|
||||||
LOGGER.info("Delayed setup complete, firing DhApiAfterDhInitEvent event...");
|
LOGGER.info("Mod Post-Initialized");
|
||||||
|
|
||||||
// should be fired after all delayed setup so singletons and config can be accessed
|
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -49,9 +49,7 @@ public class McObjectConverter
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public static Mat4f Convert(
|
public static Mat4f Convert(
|
||||||
#if MC_VER < MC_1_19_4 com.mojang.math.Matrix4f
|
#if MC_VER < MC_1_19_4 com.mojang.math.Matrix4f
|
||||||
#elif MC_VER < MC_1_21_6 org.joml.Matrix4f
|
#else org.joml.Matrix4f #endif
|
||||||
#else org.joml.Matrix4fc
|
|
||||||
#endif
|
|
||||||
mcMatrix)
|
mcMatrix)
|
||||||
{
|
{
|
||||||
FloatBuffer buffer = FloatBuffer.allocate(16);
|
FloatBuffer buffer = FloatBuffer.allocate(16);
|
||||||
@@ -65,9 +63,7 @@ public class McObjectConverter
|
|||||||
/** Taken from Minecraft's com.mojang.math.Matrix4f class from 1.18.2 */
|
/** Taken from Minecraft's com.mojang.math.Matrix4f class from 1.18.2 */
|
||||||
private static void storeMatrix(
|
private static void storeMatrix(
|
||||||
#if MC_VER < MC_1_19_4 com.mojang.math.Matrix4f
|
#if MC_VER < MC_1_19_4 com.mojang.math.Matrix4f
|
||||||
#elif MC_VER < MC_1_21_6 org.joml.Matrix4f
|
#else org.joml.Matrix4f #endif
|
||||||
#else org.joml.Matrix4fc
|
|
||||||
#endif
|
|
||||||
matrix,
|
matrix,
|
||||||
FloatBuffer buffer)
|
FloatBuffer buffer)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -74,10 +74,6 @@ public class VersionConstants implements IVersionConstants
|
|||||||
return "1.21.4";
|
return "1.21.4";
|
||||||
#elif MC_VER == MC_1_21_5
|
#elif MC_VER == MC_1_21_5
|
||||||
return "1.21.5";
|
return "1.21.5";
|
||||||
#elif MC_VER == MC_1_21_6
|
|
||||||
return "1.21.6";
|
|
||||||
#elif MC_VER == MC_1_21_8
|
|
||||||
return "1.21.8";
|
|
||||||
#else
|
#else
|
||||||
ERROR MC version constant missing
|
ERROR MC version constant missing
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+23
-43
@@ -56,20 +56,20 @@ import org.apache.logging.log4j.LogManager;
|
|||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import static com.seibel.distanthorizons.common.wrappers.gui.GuiHelper.*;
|
import static com.seibel.distanthorizons.common.wrappers.gui.GuiHelper.*;
|
||||||
import static com.seibel.distanthorizons.common.wrappers.gui.GuiHelper.Translatable;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Based upon TinyConfig but is highly modified
|
* Based upon TinyConfig but is highly modified
|
||||||
* https://github.com/Minenash/TinyConfig
|
* https://github.com/Minenash/TinyConfig
|
||||||
*
|
*
|
||||||
* Note: floats don't work with this system, use doubles.
|
|
||||||
*
|
|
||||||
* Credits to Motschen
|
* Credits to Motschen
|
||||||
*
|
*
|
||||||
* @author coolGi
|
* @author coolGi
|
||||||
* @version 5-21-2022
|
* @version 5-21-2022
|
||||||
*/
|
*/
|
||||||
|
// FLOATS DONT WORK WITH THIS
|
||||||
|
|
||||||
|
/** This file is going to be removed sometime soon, please dont hook onto anything within this file until the new UI is compleated */
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class ClassicConfigGUI
|
public class ClassicConfigGUI
|
||||||
{
|
{
|
||||||
@@ -178,7 +178,7 @@ public class ClassicConfigGUI
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
((ConfigEntry) info).uiSetWithoutSaving(value != null ? value.intValue() : 0);
|
((ConfigEntry) info).uiSetWithoutSaving(value.intValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,7 +249,7 @@ public class ClassicConfigGUI
|
|||||||
protected void init()
|
protected void init()
|
||||||
{
|
{
|
||||||
super.init();
|
super.init();
|
||||||
if (!this.reload)
|
if (!reload)
|
||||||
{
|
{
|
||||||
ConfigBase.INSTANCE.configFileINSTANCE.loadFromFile();
|
ConfigBase.INSTANCE.configFileINSTANCE.loadFromFile();
|
||||||
}
|
}
|
||||||
@@ -276,7 +276,7 @@ public class ClassicConfigGUI
|
|||||||
(buttonWidget) -> {
|
(buttonWidget) -> {
|
||||||
ChangelogScreen changelogScreen = new ChangelogScreen(this);
|
ChangelogScreen changelogScreen = new ChangelogScreen(this);
|
||||||
if (changelogScreen.usable)
|
if (changelogScreen.usable)
|
||||||
Objects.requireNonNull(this.minecraft).setScreen(changelogScreen);
|
Objects.requireNonNull(minecraft).setScreen(changelogScreen);
|
||||||
else
|
else
|
||||||
LOGGER.warn("Changelog was not able to open");
|
LOGGER.warn("Changelog was not able to open");
|
||||||
},
|
},
|
||||||
@@ -286,17 +286,17 @@ public class ClassicConfigGUI
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
this.addBtn(MakeBtn(Translatable("distanthorizons.general.cancel"),
|
addBtn(MakeBtn(Translatable("distanthorizons.general.cancel"),
|
||||||
this.width / 2 - 154, this.height - 28,
|
this.width / 2 - 154, this.height - 28,
|
||||||
150, 20,
|
150, 20,
|
||||||
button ->
|
button ->
|
||||||
{
|
{
|
||||||
ConfigBase.INSTANCE.configFileINSTANCE.loadFromFile();
|
ConfigBase.INSTANCE.configFileINSTANCE.loadFromFile();
|
||||||
Objects.requireNonNull(this.minecraft).setScreen(this.parent);
|
Objects.requireNonNull(minecraft).setScreen(parent);
|
||||||
}));
|
}));
|
||||||
this.doneButton = this.addBtn(MakeBtn(Translatable("distanthorizons.general.done"), this.width / 2 + 4, this.height - 28, 150, 20, (button) -> {
|
doneButton = addBtn(MakeBtn(Translatable("distanthorizons.general.done"), this.width / 2 + 4, this.height - 28, 150, 20, (button) -> {
|
||||||
ConfigBase.INSTANCE.configFileINSTANCE.saveToFile();
|
ConfigBase.INSTANCE.configFileINSTANCE.saveToFile();
|
||||||
Objects.requireNonNull(this.minecraft).setScreen(this.parent);
|
Objects.requireNonNull(minecraft).setScreen(parent);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.list = new ConfigListWidget(this.minecraft, this.width * 2, this.height, 32, 32, 25);
|
this.list = new ConfigListWidget(this.minecraft, this.width * 2, this.height, 32, 32, 25);
|
||||||
@@ -312,8 +312,8 @@ public class ClassicConfigGUI
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (info.getCategory().matches(this.category) && info.getAppearance().showInGui)
|
if (info.getCategory().matches(category) && info.getAppearance().showInGui)
|
||||||
this.addMenuItem(info);
|
addMenuItem(info);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -336,7 +336,7 @@ public class ClassicConfigGUI
|
|||||||
private void addMenuItem(AbstractConfigType info)
|
private void addMenuItem(AbstractConfigType info)
|
||||||
{
|
{
|
||||||
initEntry(info, this.translationPrefix);
|
initEntry(info, this.translationPrefix);
|
||||||
Component name = Translatable(this.translationPrefix + info.getNameWCategory());
|
Component name = Translatable(translationPrefix + info.getNameWCategory());
|
||||||
|
|
||||||
|
|
||||||
if (ConfigEntry.class.isAssignableFrom(info.getClass()))
|
if (ConfigEntry.class.isAssignableFrom(info.getClass()))
|
||||||
@@ -345,7 +345,7 @@ public class ClassicConfigGUI
|
|||||||
((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(this.minecraft).setScreen(this);
|
Objects.requireNonNull(minecraft).setScreen(this);
|
||||||
};
|
};
|
||||||
int posX = this.width - ConfigScreenConfigs.SpaceFromRightScreen - 150 - ConfigScreenConfigs.ButtonWidthSpacing - ConfigScreenConfigs.ResetButtonWidth;
|
int posX = this.width - ConfigScreenConfigs.SpaceFromRightScreen - 150 - ConfigScreenConfigs.ButtonWidthSpacing - ConfigScreenConfigs.ResetButtonWidth;
|
||||||
int posZ = 0;
|
int posZ = 0;
|
||||||
@@ -359,17 +359,17 @@ public class ClassicConfigGUI
|
|||||||
Map.Entry<Button.OnPress, Function<Object, Component>> widget = (Map.Entry<Button.OnPress, Function<Object, Component>>) ((EntryInfo) info.guiValue).widget;
|
Map.Entry<Button.OnPress, Function<Object, Component>> widget = (Map.Entry<Button.OnPress, Function<Object, Component>>) ((EntryInfo) info.guiValue).widget;
|
||||||
if (info.getType().isEnum())
|
if (info.getType().isEnum())
|
||||||
{
|
{
|
||||||
widget.setValue(value -> Translatable(this.translationPrefix + "enum." + info.getType().getSimpleName() + "." + info.get().toString()));
|
widget.setValue(value -> Translatable(translationPrefix + "enum." + info.getType().getSimpleName() + "." + info.get().toString()));
|
||||||
}
|
}
|
||||||
this.list.addButton(MakeBtn(widget.getValue().apply(info.get()), this.width - 150 - ConfigScreenConfigs.SpaceFromRightScreen, 0, 150, 20, widget.getKey()), resetButton, null, name);
|
this.list.addButton(MakeBtn(widget.getValue().apply(info.get()), this.width - 150 - ConfigScreenConfigs.SpaceFromRightScreen, 0, 150, 20, widget.getKey()), resetButton, null, name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (((EntryInfo) info.guiValue).widget != null)
|
else if (((EntryInfo) info.guiValue).widget != null)
|
||||||
{
|
{
|
||||||
EditBox widget = new EditBox(this.font, this.width - 150 - ConfigScreenConfigs.SpaceFromRightScreen + 2, 0, 150 - 4, 20, Translatable(""));
|
EditBox widget = new EditBox(font, this.width - 150 - ConfigScreenConfigs.SpaceFromRightScreen + 2, 0, 150 - 4, 20, null);
|
||||||
widget.setMaxLength(150);
|
widget.setMaxLength(150);
|
||||||
widget.insertText(String.valueOf(info.get()));
|
widget.insertText(String.valueOf(info.get()));
|
||||||
Predicate<String> processor = ((BiFunction<EditBox, Button, Predicate<String>>) ((EntryInfo) info.guiValue).widget).apply(widget, this.doneButton);
|
Predicate<String> processor = ((BiFunction<EditBox, Button, Predicate<String>>) ((EntryInfo) info.guiValue).widget).apply(widget, doneButton);
|
||||||
widget.setFilter(processor);
|
widget.setFilter(processor);
|
||||||
this.list.addButton(widget, resetButton, null, name);
|
this.list.addButton(widget, resetButton, null, name);
|
||||||
return;
|
return;
|
||||||
@@ -379,7 +379,7 @@ public class ClassicConfigGUI
|
|||||||
{
|
{
|
||||||
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 -> {
|
||||||
ConfigBase.INSTANCE.configFileINSTANCE.saveToFile();
|
ConfigBase.INSTANCE.configFileINSTANCE.saveToFile();
|
||||||
Objects.requireNonNull(this.minecraft).setScreen(ClassicConfigGUI.getScreen(this.configBase, this, ((ConfigCategory) info).getDestination()));
|
Objects.requireNonNull(minecraft).setScreen(ClassicConfigGUI.getScreen(this.configBase, this, ((ConfigCategory) info).getDestination()));
|
||||||
}));
|
}));
|
||||||
this.list.addButton(widget, null, null, null);
|
this.list.addButton(widget, null, null, null);
|
||||||
return;
|
return;
|
||||||
@@ -420,34 +420,16 @@ public class ClassicConfigGUI
|
|||||||
#endif
|
#endif
|
||||||
this.list.render(matrices, mouseX, mouseY, delta); // Render buttons
|
this.list.render(matrices, mouseX, mouseY, delta); // Render buttons
|
||||||
|
|
||||||
// Render title
|
DhDrawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF); // Render title
|
||||||
this.DhDrawCenteredString(matrices, this.font, this.title, this.width / 2, 15,
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
0xFFFFFF // RGB white
|
|
||||||
#else
|
|
||||||
0xFFFFFFFF // ARGB white
|
|
||||||
#endif);
|
|
||||||
|
|
||||||
if (this.configBase.modID.equals("distanthorizons"))
|
if (this.configBase.modID.equals("distanthorizons"))
|
||||||
{
|
{
|
||||||
// Display version
|
// Display version
|
||||||
this.DhDrawString(matrices, this.font, TextOrLiteral(ModInfo.VERSION), 2, this.height - 10,
|
DhDrawString(matrices, font, TextOrLiteral(ModInfo.VERSION), 2, height - 10, 0xAAAAAA);
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
0xAAAAAA // RGB white
|
|
||||||
#else
|
|
||||||
0xFFAAAAAA // ARGB white
|
|
||||||
#endif);
|
|
||||||
|
|
||||||
// If the update is pending, display this message to inform the user that it will apply when the game restarts
|
// If the update is pending, display this message to inform the user that it will apply when the game restarts
|
||||||
if (SelfUpdater.deleteOldJarOnJvmShutdown)
|
if (SelfUpdater.deleteOldJarOnJvmShutdown)
|
||||||
{
|
DhDrawString(matrices, font, Translatable(configBase.modID + ".updater.waitingForClose"), 4, height - 38, 0xFFFFFF);
|
||||||
this.DhDrawString(matrices, this.font, Translatable(this.configBase.modID + ".updater.waitingForClose"), 4, this.height - 38,
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
0xFFFFFF // RGB white
|
|
||||||
#else
|
|
||||||
0xFFFFFFFF // ARGB white
|
|
||||||
#endif);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -677,10 +659,8 @@ public class ClassicConfigGUI
|
|||||||
if (text != null && (!text.getString().contains("spacer") || button != null))
|
if (text != null && (!text.getString().contains("spacer") || button != null))
|
||||||
#if MC_VER < MC_1_20_1
|
#if MC_VER < MC_1_20_1
|
||||||
GuiComponent.drawString(matrices, textRenderer, text, 12, y + 5, 0xFFFFFF);
|
GuiComponent.drawString(matrices, textRenderer, text, 12, y + 5, 0xFFFFFF);
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
matrices.drawString(textRenderer, this.text, 12, y + 5, 0xFFFFFF);
|
|
||||||
#else
|
#else
|
||||||
matrices.drawString(textRenderer, this.text, 12, y + 5, 0xFFFFFFFF);
|
matrices.drawString(textRenderer, text, 12, y + 5, 0xFFFFFF);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,27 +52,6 @@ public class DhScreen extends Screen
|
|||||||
{
|
{
|
||||||
renderTooltip(guiStack, comp, x, y);
|
renderTooltip(guiStack, comp, x, y);
|
||||||
}
|
}
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
protected void DhDrawCenteredString(GuiGraphics guiStack, Font font, Component text, int x, int y, int color)
|
|
||||||
{
|
|
||||||
guiStack.drawCenteredString(font, text, x, y, color);
|
|
||||||
}
|
|
||||||
protected void DhDrawString(GuiGraphics guiStack, Font font, Component text, int x, int y, int color)
|
|
||||||
{
|
|
||||||
guiStack.drawString(font, text, x, y, color);
|
|
||||||
}
|
|
||||||
//protected void DhRenderTooltip(GuiGraphics guiStack, Font font, List<? extends net.minecraft.util.FormattedCharSequence> text, int x, int y)
|
|
||||||
//{
|
|
||||||
// guiStack.renderTooltip(font, text, x, y);
|
|
||||||
//}
|
|
||||||
protected void DhRenderComponentTooltip(GuiGraphics guiStack, Font font, List<Component> comp, int x, int y)
|
|
||||||
{
|
|
||||||
guiStack.renderComponentTooltip(font, comp, x, y);
|
|
||||||
}
|
|
||||||
protected void DhRenderTooltip(GuiGraphics guiStack, Font font, Component text, int x, int y)
|
|
||||||
{
|
|
||||||
guiStack.renderTooltip(font, text, x, y);
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
protected void DhDrawCenteredString(GuiGraphics guiStack, Font font, Component text, int x, int y, int color)
|
protected void DhDrawCenteredString(GuiGraphics guiStack, Font font, Component text, int x, int y, int color)
|
||||||
{
|
{
|
||||||
@@ -82,20 +61,17 @@ public class DhScreen extends Screen
|
|||||||
{
|
{
|
||||||
guiStack.drawString(font, text, x, y, color);
|
guiStack.drawString(font, text, x, y, color);
|
||||||
}
|
}
|
||||||
//protected void DhRenderTooltip(GuiGraphics guiStack, Font font, List<? extends net.minecraft.util.FormattedCharSequence> text, int x, int y)
|
protected void DhRenderTooltip(GuiGraphics guiStack, Font font, List<? extends net.minecraft.util.FormattedCharSequence> text, int x, int y)
|
||||||
//{
|
{
|
||||||
// //guiStack.renderTooltip(font, text, x, y);
|
guiStack.renderTooltip(font, text, x, y);
|
||||||
//}
|
}
|
||||||
protected void DhRenderComponentTooltip(GuiGraphics guiStack, Font font, List<Component> comp, int x, int y)
|
protected void DhRenderComponentTooltip(GuiGraphics guiStack, Font font, List<Component> comp, int x, int y)
|
||||||
{
|
{
|
||||||
guiStack.setComponentTooltipForNextFrame(font, comp, x, y);
|
guiStack.renderComponentTooltip(font, comp, x, y);
|
||||||
}
|
}
|
||||||
protected void DhRenderTooltip(GuiGraphics guiStack, Font font, Component text, int x, int y)
|
protected void DhRenderTooltip(GuiGraphics guiStack, Font font, Component text, int x, int y)
|
||||||
{
|
{
|
||||||
guiStack.setTooltipForNextFrame(font, text, x, y);
|
guiStack.renderTooltip(font, text, x, y);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-20
@@ -39,13 +39,9 @@ import net.minecraft.client.renderer.GameRenderer;
|
|||||||
#elif MC_VER < MC_1_20_2
|
#elif MC_VER < MC_1_20_2
|
||||||
import net.minecraft.client.gui.components.ImageButton;
|
import net.minecraft.client.gui.components.ImageButton;
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
|
||||||
#else
|
#else
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.RenderPipelines;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -176,15 +172,9 @@ public class TexturedButtonWidget extends Button
|
|||||||
{
|
{
|
||||||
#if MC_VER < MC_1_21_3
|
#if MC_VER < MC_1_21_3
|
||||||
matrices.blitSprite(SPRITES.get(this.active, this.isHoveredOrFocused()), this.getX(), this.getY(), this.getWidth(), this.getHeight());
|
matrices.blitSprite(SPRITES.get(this.active, this.isHoveredOrFocused()), this.getX(), this.getY(), this.getWidth(), this.getHeight());
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
matrices.blitSprite(
|
|
||||||
RenderType::guiTextured,
|
|
||||||
SPRITES.get(this.active, this.isHoveredOrFocused()),
|
|
||||||
this.getX(), this.getY(),
|
|
||||||
this.getWidth(), this.getHeight());
|
|
||||||
#else
|
#else
|
||||||
matrices.blitSprite(
|
matrices.blitSprite(
|
||||||
RenderPipelines.GUI_TEXTURED,
|
RenderType::guiTextured,
|
||||||
SPRITES.get(this.active, this.isHoveredOrFocused()),
|
SPRITES.get(this.active, this.isHoveredOrFocused()),
|
||||||
this.getX(), this.getY(),
|
this.getX(), this.getY(),
|
||||||
this.getWidth(), this.getHeight());
|
this.getWidth(), this.getHeight());
|
||||||
@@ -206,17 +196,9 @@ public class TexturedButtonWidget extends Button
|
|||||||
|
|
||||||
#if MC_VER < MC_1_21_3
|
#if MC_VER < MC_1_21_3
|
||||||
matrices.blit(this.textureResourceLocation, this.getX(), this.getY(), this.u, this.v + (this.hoveredVOffset * i), this.width, this.height, this.textureWidth, this.textureHeight);
|
matrices.blit(this.textureResourceLocation, this.getX(), this.getY(), this.u, this.v + (this.hoveredVOffset * i), this.width, this.height, this.textureWidth, this.textureHeight);
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
matrices.blit(
|
|
||||||
RenderType::guiTextured,
|
|
||||||
this.textureResourceLocation,
|
|
||||||
this.getX(), this.getY(),
|
|
||||||
this.u, this.v + (this.hoveredVOffset * i),
|
|
||||||
this.width, this.height,
|
|
||||||
this.textureWidth, this.textureHeight);
|
|
||||||
#else
|
#else
|
||||||
matrices.blit(
|
matrices.blit(
|
||||||
RenderPipelines.GUI_TEXTURED,
|
RenderType::guiTextured,
|
||||||
this.textureResourceLocation,
|
this.textureResourceLocation,
|
||||||
this.getX(), this.getY(),
|
this.getX(), this.getY(),
|
||||||
this.u, this.v + (this.hoveredVOffset * i),
|
this.u, this.v + (this.hoveredVOffset * i),
|
||||||
|
|||||||
+6
-22
@@ -169,10 +169,8 @@ public class UpdateModScreen extends DhScreen
|
|||||||
{
|
{
|
||||||
#if MC_VER < MC_1_20_2
|
#if MC_VER < MC_1_20_2
|
||||||
this.renderBackground(matrices); // Render background
|
this.renderBackground(matrices); // Render background
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
this.renderBackground(matrices, mouseX, mouseY, delta); // Render background
|
|
||||||
#else
|
#else
|
||||||
// background blur is already being rendered, rendering again causes the game to crash
|
this.renderBackground(matrices, mouseX, mouseY, delta); // Render background
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TODO: add the tooltips for the buttons
|
// TODO: add the tooltips for the buttons
|
||||||
@@ -180,30 +178,16 @@ public class UpdateModScreen extends DhScreen
|
|||||||
// TODO: Add tooltips
|
// TODO: Add tooltips
|
||||||
|
|
||||||
// Render the text's
|
// Render the text's
|
||||||
this.DhDrawCenteredString(matrices, this.font,
|
DhDrawCenteredString(matrices, this.font, Translatable(ModInfo.ID + ".updater.text1"), this.width / 2, this.height / 2 - 35, 0xFFFFFF);
|
||||||
Translatable(ModInfo.ID + ".updater.text1"),
|
DhDrawCenteredString(matrices, this.font,
|
||||||
this.width / 2, this.height / 2 - 35,
|
Translatable(ModInfo.ID + ".updater.text2", currentVer, nextVer),
|
||||||
#if MC_VER < MC_1_21_6
|
this.width / 2, this.height / 2 - 20, 0x52FD52);
|
||||||
0xFFFFFF // RGB
|
|
||||||
#else
|
|
||||||
0xFFFFFFFF // ARGB
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
this.DhDrawCenteredString(matrices, this.font,
|
|
||||||
Translatable(ModInfo.ID + ".updater.text2", this.currentVer, this.nextVer),
|
|
||||||
this.width / 2, this.height / 2 - 20,
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
0x52FD52 // RGB
|
|
||||||
#else
|
|
||||||
0xFF52FD52 // ARGB
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClose()
|
public void onClose()
|
||||||
{
|
{
|
||||||
Objects.requireNonNull(this.minecraft).setScreen(this.parent); // Go to the parent screen
|
Objects.requireNonNull(minecraft).setScreen(this.parent); // Goto the parent screen
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+2
-2
@@ -21,7 +21,7 @@ package com.seibel.distanthorizons.common.wrappers.minecraft;
|
|||||||
|
|
||||||
#if MC_VER < MC_1_21_5
|
#if MC_VER < MC_1_21_5
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
#elif MC_VER >= MC_1_21_5
|
#elif MC_VER == MC_1_21_5
|
||||||
import com.mojang.blaze3d.opengl.GlStateManager;
|
import com.mojang.blaze3d.opengl.GlStateManager;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -233,7 +233,7 @@ public class MinecraftGLWrapper implements IMinecraftGLWrapper
|
|||||||
GlStateManager._activeTexture(textureId);
|
GlStateManager._activeTexture(textureId);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public int getActiveTexture() { return GL32.glGetInteger(GL32.GL_TEXTURE_BINDING_2D); }
|
public int getActiveTexture() { return GL32.glGetInteger(GL32.GL_ACTIVE_TEXTURE); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Always binds to {@link GL32#GL_TEXTURE_2D}
|
* Always binds to {@link GL32#GL_TEXTURE_2D}
|
||||||
|
|||||||
+8
-49
@@ -33,12 +33,9 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
|||||||
import com.seibel.distanthorizons.core.util.ColorUtil;
|
import com.seibel.distanthorizons.core.util.ColorUtil;
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper;
|
||||||
|
|
||||||
#if MC_VER < MC_1_17_1
|
#if MC_VER >= MC_1_17_1
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
import net.minecraft.client.renderer.FogRenderer;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
#else
|
|
||||||
import net.minecraft.client.renderer.fog.FogRenderer;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if MC_VER < MC_1_19_4
|
#if MC_VER < MC_1_19_4
|
||||||
@@ -46,6 +43,8 @@ import org.joml.Matrix4f;
|
|||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
#else
|
#else
|
||||||
#endif
|
#endif
|
||||||
|
#if MC_VER >= MC_1_20_2
|
||||||
|
#endif
|
||||||
|
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.AbstractOptifineAccessor;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.AbstractOptifineAccessor;
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||||
@@ -74,6 +73,7 @@ import org.joml.Vector4f;
|
|||||||
|
|
||||||
#if MC_VER >= MC_1_21_5
|
#if MC_VER >= MC_1_21_5
|
||||||
import com.mojang.blaze3d.opengl.GlTexture;
|
import com.mojang.blaze3d.opengl.GlTexture;
|
||||||
|
import org.lwjgl.opengl.GL32;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -109,11 +109,6 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
|||||||
public boolean colorTextureCastFailLogged = false;
|
public boolean colorTextureCastFailLogged = false;
|
||||||
public boolean depthTextureCastFailLogged = false;
|
public boolean depthTextureCastFailLogged = false;
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
#else
|
|
||||||
private static FogRenderer mcFogRenderer = null;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//=========//
|
//=========//
|
||||||
@@ -131,22 +126,11 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
|||||||
/** Unless you really need to know if the player is blind, use {@link MinecraftRenderWrapper#isFogStateSpecial()}/{@link IMinecraftRenderWrapper#isFogStateSpecial()} instead */
|
/** Unless you really need to know if the player is blind, use {@link MinecraftRenderWrapper#isFogStateSpecial()}/{@link IMinecraftRenderWrapper#isFogStateSpecial()} instead */
|
||||||
public boolean playerHasBlindingEffect()
|
public boolean playerHasBlindingEffect()
|
||||||
{
|
{
|
||||||
if (MC.player == null)
|
return MC.player.getActiveEffectsMap().get(MobEffects.BLINDNESS) != null
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (MC.player.getActiveEffectsMap() == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return MC.player.getActiveEffectsMap().get(MobEffects.BLINDNESS) != null
|
|
||||||
#if MC_VER >= MC_1_19_2
|
#if MC_VER >= MC_1_19_2
|
||||||
|| MC.player.getActiveEffectsMap().get(MobEffects.DARKNESS) != null // Deep dark effect
|
|| MC.player.getActiveEffectsMap().get(MobEffects.DARKNESS) != null // Deep dark effect
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -179,33 +163,8 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper
|
|||||||
Math.max(0f, Math.min(colorValues[2], 1f)), // b
|
Math.max(0f, Math.min(colorValues[2], 1f)), // b
|
||||||
Math.max(0f, Math.min(colorValues[3], 1f)) // a
|
Math.max(0f, Math.min(colorValues[3], 1f)) // a
|
||||||
);
|
);
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
Vector4f colorValues = FogRenderer.computeFogColor(MC.gameRenderer.getMainCamera(), partialTicks, MC.level, 1, MC.gameRenderer.getDarkenWorldAmount(partialTicks));
|
|
||||||
return new Color(
|
|
||||||
Math.max(0f, Math.min(colorValues.x, 1f)), // r
|
|
||||||
Math.max(0f, Math.min(colorValues.y, 1f)), // g
|
|
||||||
Math.max(0f, Math.min(colorValues.z, 1f)), // b
|
|
||||||
Math.max(0f, Math.min(colorValues.w, 1f)) // a
|
|
||||||
);
|
|
||||||
#else
|
#else
|
||||||
|
Vector4f colorValues = FogRenderer.computeFogColor(MC.gameRenderer.getMainCamera(), partialTicks, MC.level, 1, MC.gameRenderer.getDarkenWorldAmount(partialTicks));
|
||||||
if (mcFogRenderer == null)
|
|
||||||
{
|
|
||||||
mcFogRenderer = new FogRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MC.level == null)
|
|
||||||
{
|
|
||||||
// shouldn't happen, but just in case
|
|
||||||
return Color.white;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean isFoggy =
|
|
||||||
MC.level.effects().isFoggyAt(
|
|
||||||
MC.gameRenderer.getMainCamera().getBlockPosition().getX(),
|
|
||||||
MC.gameRenderer.getMainCamera().getBlockPosition().getZ())
|
|
||||||
|| MC.gui.getBossOverlay().shouldCreateWorldFog();
|
|
||||||
Vector4f colorValues = mcFogRenderer.setupFog(MC.gameRenderer.getMainCamera(), MC.options.getEffectiveRenderDistance(), isFoggy, MC.deltaTracker, MC.gameRenderer.getDarkenWorldAmount(MC.deltaTracker.getGameTimeDeltaPartialTick(true)), MC.level);
|
|
||||||
return new Color(
|
return new Color(
|
||||||
Math.max(0f, Math.min(colorValues.x, 1f)), // r
|
Math.max(0f, Math.min(colorValues.x, 1f)), // r
|
||||||
Math.max(0f, Math.min(colorValues.y, 1f)), // g
|
Math.max(0f, Math.min(colorValues.y, 1f)), // g
|
||||||
|
|||||||
+2
-11
@@ -54,10 +54,8 @@ public class ServerPlayerWrapper implements IServerPlayerWrapper
|
|||||||
{
|
{
|
||||||
#if MC_VER < MC_1_20_1
|
#if MC_VER < MC_1_20_1
|
||||||
level = this.getServerPlayer().getLevel();
|
level = this.getServerPlayer().getLevel();
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
level = this.getServerPlayer().serverLevel();
|
|
||||||
#else
|
#else
|
||||||
level = this.getServerPlayer().level();
|
level = this.getServerPlayer().serverLevel();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,14 +70,7 @@ public class ServerPlayerWrapper implements IServerPlayerWrapper
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getViewDistance()
|
public int getViewDistance() { return this.getServerPlayer().server.getPlayerList().getViewDistance(); }
|
||||||
{
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
return this.getServerPlayer().server.getPlayerList().getViewDistance();
|
|
||||||
#else
|
|
||||||
return this.getServerPlayer().getServer().getPlayerList().getViewDistance();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SocketAddress getRemoteAddress()
|
public SocketAddress getRemoteAddress()
|
||||||
|
|||||||
+5
-25
@@ -37,7 +37,6 @@ import java.util.Collections;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.WeakHashMap;
|
import java.util.WeakHashMap;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
#if MC_VER <= MC_1_20_4
|
#if MC_VER <= MC_1_20_4
|
||||||
import net.minecraft.world.level.chunk.ChunkStatus;
|
import net.minecraft.world.level.chunk.ChunkStatus;
|
||||||
@@ -67,10 +66,6 @@ public class ClientLevelWrapper implements IClientLevelWrapper
|
|||||||
private final ClientLevel level;
|
private final ClientLevel level;
|
||||||
private final ConcurrentHashMap<BlockState, ClientBlockStateColorCache> blockCache = new ConcurrentHashMap<>();
|
private final ConcurrentHashMap<BlockState, ClientBlockStateColorCache> blockCache = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
/** cached method reference to reduce GC overhead */
|
|
||||||
private final Function<BlockState, ClientBlockStateColorCache> cachedBlockColorCacheFunction = (blockState) -> this.createBlockColorCache(blockState);
|
|
||||||
|
|
||||||
|
|
||||||
private BlockStateWrapper dirtBlockWrapper;
|
private BlockStateWrapper dirtBlockWrapper;
|
||||||
private BiomeWrapper plainsBiomeWrapper;
|
private BiomeWrapper plainsBiomeWrapper;
|
||||||
@Deprecated // TODO circular references are bad
|
@Deprecated // TODO circular references are bad
|
||||||
@@ -110,26 +105,14 @@ public class ClientLevelWrapper implements IClientLevelWrapper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return LEVEL_WRAPPER_REF_BY_CLIENT_LEVEL.compute(level, (newLevel, levelRef) ->
|
||||||
WeakReference<ClientLevelWrapper> levelRef = LEVEL_WRAPPER_REF_BY_CLIENT_LEVEL.get(level);
|
|
||||||
if (levelRef != null)
|
|
||||||
{
|
{
|
||||||
ClientLevelWrapper levelWrapper = levelRef.get();
|
if (levelRef != null)
|
||||||
if (levelWrapper != null)
|
|
||||||
{
|
{
|
||||||
return levelWrapper;
|
ClientLevelWrapper oldLevelWrapper = levelRef.get();
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return LEVEL_WRAPPER_REF_BY_CLIENT_LEVEL.compute(level, (newLevel, newLevelRef) ->
|
|
||||||
{
|
|
||||||
if (newLevelRef != null)
|
|
||||||
{
|
|
||||||
ClientLevelWrapper oldLevelWrapper = newLevelRef.get();
|
|
||||||
if (oldLevelWrapper != null)
|
if (oldLevelWrapper != null)
|
||||||
{
|
{
|
||||||
return newLevelRef;
|
return levelRef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,13 +162,10 @@ public class ClientLevelWrapper implements IClientLevelWrapper
|
|||||||
{
|
{
|
||||||
ClientBlockStateColorCache blockColorCache = this.blockCache.computeIfAbsent(
|
ClientBlockStateColorCache blockColorCache = this.blockCache.computeIfAbsent(
|
||||||
((BlockStateWrapper) blockWrapper).blockState,
|
((BlockStateWrapper) blockWrapper).blockState,
|
||||||
this.cachedBlockColorCacheFunction);
|
(block) -> new ClientBlockStateColorCache(block, this));
|
||||||
|
|
||||||
return blockColorCache.getColor((BiomeWrapper) biome, pos);
|
return blockColorCache.getColor((BiomeWrapper) biome, pos);
|
||||||
}
|
}
|
||||||
/** used by {@link ClientLevelWrapper#cachedBlockColorCacheFunction} */
|
|
||||||
private ClientBlockStateColorCache createBlockColorCache(BlockState block) { return new ClientBlockStateColorCache(block, this); }
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getDirtBlockColor()
|
public int getDirtBlockColor()
|
||||||
|
|||||||
+1
-10
@@ -162,7 +162,7 @@ public class ChunkLoader
|
|||||||
#if MC_VER < MC_1_18_2
|
#if MC_VER < MC_1_18_2
|
||||||
if (chunkType != ChunkStatus.ChunkType.LEVELCHUNK)
|
if (chunkType != ChunkStatus.ChunkType.LEVELCHUNK)
|
||||||
return null;
|
return null;
|
||||||
#elif MC_VER < MC_1_21_6
|
#else
|
||||||
|
|
||||||
BlendingData blendingData = readBlendingData(tagLevel);
|
BlendingData blendingData = readBlendingData(tagLevel);
|
||||||
#if MC_VER < MC_1_19_2
|
#if MC_VER < MC_1_19_2
|
||||||
@@ -172,15 +172,7 @@ public class ChunkLoader
|
|||||||
if (chunkType == #if MC_VER < MC_1_20_6 ChunkStatus.ChunkType.PROTOCHUNK #else ChunkType.PROTOCHUNK #endif && blendingData == null)
|
if (chunkType == #if MC_VER < MC_1_20_6 ChunkStatus.ChunkType.PROTOCHUNK #else ChunkType.PROTOCHUNK #endif && blendingData == null)
|
||||||
return null;
|
return null;
|
||||||
#endif
|
#endif
|
||||||
#else
|
|
||||||
|
|
||||||
// ignore blending data, there appears to be an issue with parsing it in 1.21.6
|
|
||||||
BlendingData blendingData = null;
|
|
||||||
|
|
||||||
if (chunkType == ChunkType.PROTOCHUNK)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
long inhabitedTime = tagGetLong(tagLevel, "InhabitedTime");
|
long inhabitedTime = tagGetLong(tagLevel, "InhabitedTime");
|
||||||
@@ -497,7 +489,6 @@ public class ChunkLoader
|
|||||||
#if MC_VER < MC_1_21_3
|
#if MC_VER < MC_1_21_3
|
||||||
blendingData = BlendingData.CODEC.parse(blendingDataTag).resultOrPartial((message) -> logParsingWarningOnce(message)).orElse(null);
|
blendingData = BlendingData.CODEC.parse(blendingDataTag).resultOrPartial((message) -> logParsingWarningOnce(message)).orElse(null);
|
||||||
#else
|
#else
|
||||||
// blending data appears to have changed as of 1.21.6 causing a class cast exception here due to it being wrapped in a Java.Optional
|
|
||||||
blendingData = BlendingData.unpack(BlendingData.Packed.CODEC.parse(blendingDataTag).resultOrPartial((message) -> logParsingWarningOnce(message)).orElse(null));
|
blendingData = BlendingData.unpack(BlendingData.Packed.CODEC.parse(blendingDataTag).resultOrPartial((message) -> logParsingWarningOnce(message)).orElse(null));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
Submodule coreSubProjects updated: 435cbde238...9cb627eaac
@@ -228,14 +228,6 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
modelViewMatrix = McObjectConverter.Convert(renderContext.positionMatrix());
|
modelViewMatrix = McObjectConverter.Convert(renderContext.positionMatrix());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//LOGGER.info("\n\n" +
|
|
||||||
// "Level Render\n" +
|
|
||||||
// "Mc MVM: \n" + modelViewMatrix.toString() + "\n" +
|
|
||||||
// "Mc Proj: \n" + projectionMatrix.toString()
|
|
||||||
//);
|
|
||||||
|
|
||||||
|
|
||||||
this.clientApi.renderLods(ClientLevelWrapper.getWrapper(renderContext.world()),
|
this.clientApi.renderLods(ClientLevelWrapper.getWrapper(renderContext.world()),
|
||||||
modelViewMatrix,
|
modelViewMatrix,
|
||||||
projectionMatrix,
|
projectionMatrix,
|
||||||
@@ -284,17 +276,6 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
modelViewMatrix = McObjectConverter.Convert(renderContext.positionMatrix());
|
modelViewMatrix = McObjectConverter.Convert(renderContext.positionMatrix());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
// rendered in MixinLevelRenderer
|
|
||||||
#else
|
|
||||||
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(renderContext.world()),
|
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
|
||||||
ClientApi.RENDER_STATE.frameTime
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
this.clientApi.renderFade(
|
this.clientApi.renderFade(
|
||||||
modelViewMatrix,
|
modelViewMatrix,
|
||||||
projectionMatrix,
|
projectionMatrix,
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
package com.seibel.distanthorizons.fabric;
|
package com.seibel.distanthorizons.fabric;
|
||||||
|
|
||||||
import com.mojang.brigadier.CommandDispatcher;
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
import com.seibel.distanthorizons.api.enums.config.EDhApiMcRenderingFadeMode;
|
|
||||||
import com.seibel.distanthorizons.common.AbstractModInitializer;
|
import com.seibel.distanthorizons.common.AbstractModInitializer;
|
||||||
import com.seibel.distanthorizons.core.config.Config;
|
import com.seibel.distanthorizons.core.config.Config;
|
||||||
import com.seibel.distanthorizons.core.config.ConfigBase;
|
import com.seibel.distanthorizons.core.config.ConfigBase;
|
||||||
@@ -127,8 +126,7 @@ public class FabricMain extends AbstractModInitializer implements ClientModIniti
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void subscribeClientStartedEvent(Runnable eventHandler)
|
protected void subscribeClientStartedEvent(Runnable eventHandler) { ClientLifecycleEvents.CLIENT_STARTED.register((mc) -> eventHandler.run()); }
|
||||||
{ ClientLifecycleEvents.CLIENT_STARTED.register((mc) -> eventHandler.run()); }
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void subscribeServerStartingEvent(Consumer<MinecraftServer> eventHandler)
|
protected void subscribeServerStartingEvent(Consumer<MinecraftServer> eventHandler)
|
||||||
|
|||||||
+15
-106
@@ -22,51 +22,31 @@ package com.seibel.distanthorizons.fabric.mixins.client;
|
|||||||
import com.seibel.distanthorizons.core.config.Config;
|
import com.seibel.distanthorizons.core.config.Config;
|
||||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
|
import net.minecraft.client.renderer.FogRenderer;
|
||||||
|
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
||||||
import net.minecraft.world.effect.MobEffects;
|
import net.minecraft.world.effect.MobEffects;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
|
||||||
#if MC_VER < MC_1_17_1
|
#if MC_VER < MC_1_17_1
|
||||||
import net.minecraft.world.level.material.FluidState;
|
import net.minecraft.world.level.material.FluidState;
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
|
||||||
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
import net.minecraft.world.level.material.FogType;
|
import net.minecraft.world.level.material.FogType;
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
#else
|
||||||
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
import net.minecraft.world.level.material.FogType;
|
import net.minecraft.world.level.material.FogType;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
import com.mojang.blaze3d.shaders.FogShape;
|
import com.mojang.blaze3d.shaders.FogShape;
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
|
||||||
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
|
||||||
import net.minecraft.client.renderer.FogParameters;
|
import net.minecraft.client.renderer.FogParameters;
|
||||||
import org.joml.Vector4f;
|
import org.joml.Vector4f;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
#else
|
|
||||||
import net.minecraft.world.level.material.FogType;
|
|
||||||
import net.minecraft.client.renderer.fog.FogRenderer;
|
|
||||||
import net.minecraft.client.renderer.fog.FogData;
|
|
||||||
|
|
||||||
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
|
||||||
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@Mixin(FogRenderer.class)
|
@Mixin(FogRenderer.class)
|
||||||
@@ -86,23 +66,18 @@ public class MixinFogRenderer
|
|||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
@Inject(at = @At("RETURN"), method = "setupFog")
|
@Inject(at = @At("RETURN"), method = "setupFog")
|
||||||
private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float g, CallbackInfo callback)
|
private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float g, CallbackInfo callback)
|
||||||
#elif MC_VER < MC_1_21_6
|
#else
|
||||||
@Inject(at = @At("RETURN"), method = "setupFog", cancellable = true)
|
@Inject(at = @At("RETURN"), method = "setupFog", cancellable = true)
|
||||||
private static void disableSetupFog(Camera camera, FogMode fogMode, Vector4f vector4f, float f, boolean bl, float g, CallbackInfoReturnable<FogParameters> callback)
|
private static void disableSetupFog(Camera camera, FogMode fogMode, Vector4f vector4f, float f, boolean bl, float g, CallbackInfoReturnable<FogParameters> callback)
|
||||||
#else
|
|
||||||
@Unique
|
|
||||||
private static void unused()
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if MC_VER < MC_1_21_6
|
boolean cameraNotInFluid = cameraNotInFluid(camera);
|
||||||
boolean cancelFog = cancelFog(camera, fogMode);
|
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
boolean cancelFog = cancelFog(camera);
|
|
||||||
#else
|
|
||||||
boolean cancelFog = cancelFog();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (cancelFog)
|
Entity entity = camera.getEntity();
|
||||||
|
boolean isSpecialFog = (entity instanceof LivingEntity) && ((LivingEntity) entity).hasEffect(MobEffects.BLINDNESS);
|
||||||
|
if (!isSpecialFog && cameraNotInFluid && fogMode == FogMode.FOG_TERRAIN
|
||||||
|
&& !SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).isFogStateSpecial()
|
||||||
|
&& !Config.Client.Advanced.Graphics.Fog.enableVanillaFog.get())
|
||||||
{
|
{
|
||||||
#if MC_VER < MC_1_17_1
|
#if MC_VER < MC_1_17_1
|
||||||
RenderSystem.fogStart(A_REALLY_REALLY_BIG_VALUE);
|
RenderSystem.fogStart(A_REALLY_REALLY_BIG_VALUE);
|
||||||
@@ -110,74 +85,10 @@ public class MixinFogRenderer
|
|||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
RenderSystem.setShaderFogStart(A_REALLY_REALLY_BIG_VALUE);
|
RenderSystem.setShaderFogStart(A_REALLY_REALLY_BIG_VALUE);
|
||||||
RenderSystem.setShaderFogEnd(A_EVEN_LARGER_VALUE);
|
RenderSystem.setShaderFogEnd(A_EVEN_LARGER_VALUE);
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
callback.setReturnValue(FogParameters.NO_FOG);
|
|
||||||
#else
|
#else
|
||||||
|
callback.setReturnValue(FogParameters.NO_FOG);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
#else
|
|
||||||
|
|
||||||
// In MC's FogRenderer they clamp the "renderDistanceEnd" fog field to the render distance,
|
|
||||||
// which prevents us from disabling the vanilla fog.
|
|
||||||
// This mixin fires after they set the "renderDistanceEnd" so we can change it.
|
|
||||||
@WrapOperation(
|
|
||||||
method = "setupFog",
|
|
||||||
at = @At(
|
|
||||||
value = "FIELD",
|
|
||||||
target = "Lnet/minecraft/client/renderer/fog/FogData;renderDistanceEnd:F",
|
|
||||||
opcode = org.objectweb.asm.Opcodes.PUTFIELD
|
|
||||||
)
|
|
||||||
)
|
|
||||||
private void onSetRenderDistanceEnd(FogData instance, float value, Operation<Void> original)
|
|
||||||
{
|
|
||||||
if (cancelFog())
|
|
||||||
{
|
|
||||||
instance.environmentalStart = A_REALLY_REALLY_BIG_VALUE;
|
|
||||||
instance.environmentalEnd = A_EVEN_LARGER_VALUE;
|
|
||||||
|
|
||||||
instance.renderDistanceStart = A_REALLY_REALLY_BIG_VALUE;
|
|
||||||
instance.renderDistanceEnd = A_EVEN_LARGER_VALUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always call the original with the modified or original value
|
|
||||||
original.call(instance, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
@Unique
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
private static boolean cancelFog(Camera camera, FogMode fogMode)
|
|
||||||
#else
|
|
||||||
private static boolean cancelFog()
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
Entity entity = camera.getEntity();
|
|
||||||
#else
|
|
||||||
Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera();
|
|
||||||
Entity entity = camera.getEntity();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
boolean cameraNotInFluid = cameraNotInFluid(camera);
|
|
||||||
boolean isSpecialFog = (entity instanceof LivingEntity) && ((LivingEntity) entity).hasEffect(MobEffects.BLINDNESS);
|
|
||||||
|
|
||||||
boolean cancelFog = !isSpecialFog;
|
|
||||||
cancelFog = cancelFog && cameraNotInFluid;
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
cancelFog = cancelFog && (fogMode == FogMode.FOG_TERRAIN);
|
|
||||||
#endif
|
|
||||||
cancelFog = cancelFog && !SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).isFogStateSpecial();
|
|
||||||
cancelFog = cancelFog && !Config.Client.Advanced.Graphics.Fog.enableVanillaFog.get();
|
|
||||||
|
|
||||||
return cancelFog;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
@@ -194,6 +105,4 @@ public class MixinFogRenderer
|
|||||||
return cameraNotInFluid;
|
return cameraNotInFluid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-58
@@ -19,54 +19,51 @@
|
|||||||
|
|
||||||
package com.seibel.distanthorizons.fabric.mixins.client;
|
package com.seibel.distanthorizons.fabric.mixins.client;
|
||||||
|
|
||||||
#if MC_VER < MC_1_19_4
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
#if MC_VER < MC_1_19_4
|
||||||
import com.mojang.math.Matrix4f;
|
import com.mojang.math.Matrix4f;
|
||||||
import org.lwjgl.opengl.GL32;
|
import org.lwjgl.opengl.GL32;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
|
||||||
import org.joml.Matrix4f;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
#else
|
#else
|
||||||
import net.minecraft.client.renderer.chunk.ChunkSectionsToRender;
|
import org.joml.Matrix4f;
|
||||||
import org.joml.Matrix4fc;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
#endif
|
#endif
|
||||||
|
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
|
||||||
|
|
||||||
import com.seibel.distanthorizons.common.wrappers.McObjectConverter;
|
import com.seibel.distanthorizons.common.wrappers.McObjectConverter;
|
||||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||||
import com.seibel.distanthorizons.coreapi.ModInfo;
|
|
||||||
import com.seibel.distanthorizons.fabric.FabricClientProxy;
|
|
||||||
import com.seibel.distanthorizons.core.util.math.Mat4f;
|
import com.seibel.distanthorizons.core.util.math.Mat4f;
|
||||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
import net.minecraft.client.Camera;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
|
import net.minecraft.client.renderer.LightTexture;
|
||||||
import com.seibel.distanthorizons.core.config.Config;
|
import com.seibel.distanthorizons.core.config.Config;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import net.minecraft.client.renderer.LevelRenderer;
|
import net.minecraft.client.renderer.LevelRenderer;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import org.apache.logging.log4j.Logger;
|
/**
|
||||||
|
* This class is used to mix in my rendering code
|
||||||
|
* before Minecraft starts rendering blocks.
|
||||||
|
* If this wasn't done, and we used Forge's
|
||||||
|
* render last event, the LODs would render on top
|
||||||
|
* of the normal terrain.
|
||||||
|
*
|
||||||
|
* This is also the mixin for rendering the clouds
|
||||||
|
*
|
||||||
|
* @author coolGi
|
||||||
|
* @author James Seibel
|
||||||
|
* @version 12-31-2021
|
||||||
|
*/
|
||||||
@Mixin(LevelRenderer.class)
|
@Mixin(LevelRenderer.class)
|
||||||
public class MixinLevelRenderer
|
public class MixinLevelRenderer
|
||||||
{
|
{
|
||||||
@Shadow
|
@Shadow
|
||||||
private ClientLevel level;
|
private ClientLevel level;
|
||||||
|
|
||||||
@Unique
|
|
||||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_17_1
|
#if MC_VER < MC_1_17_1
|
||||||
@Inject(at = @At("HEAD"),
|
@Inject(at = @At("HEAD"),
|
||||||
method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDD)V",
|
method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDD)V",
|
||||||
@@ -87,65 +84,51 @@ public class MixinLevelRenderer
|
|||||||
method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V",
|
method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V",
|
||||||
cancellable = true)
|
cancellable = true)
|
||||||
private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double camX, double camY, double camZ, Matrix4f projectionMatrix, CallbackInfo callback)
|
private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double camX, double camY, double camZ, Matrix4f projectionMatrix, CallbackInfo callback)
|
||||||
#elif MC_VER < MC_1_21_6
|
#else
|
||||||
@Inject(at = @At("HEAD"),
|
@Inject(at = @At("HEAD"),
|
||||||
method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;DDDLorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V",
|
method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;DDDLorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V",
|
||||||
cancellable = true)
|
cancellable = true)
|
||||||
private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f projectionMatrix, Matrix4f frustumMatrix, CallbackInfo callback)
|
private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f projectionMatrix, Matrix4f frustumMatrix, CallbackInfo callback)
|
||||||
#else
|
|
||||||
@Inject(at = @At("HEAD"), method = "prepareChunkRenders", cancellable = true)
|
|
||||||
private void prepareChunkRenders(Matrix4fc projectionMatrix, double d, double e, double f, CallbackInfoReturnable<ChunkSectionsToRender> callback)
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if MC_VER == MC_1_16_5
|
#if MC_VER == MC_1_16_5
|
||||||
// get the matrices from the OpenGL fixed pipeline
|
// get the matrices from the OpenGL fixed pipeline
|
||||||
float[] mcProjMatrixRaw = new float[16];
|
float[] mcProjMatrixRaw = new float[16];
|
||||||
GL32.glGetFloatv(GL32.GL_PROJECTION_MATRIX, mcProjMatrixRaw);
|
GL32.glGetFloatv(GL32.GL_PROJECTION_MATRIX, mcProjMatrixRaw);
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix = new Mat4f(mcProjMatrixRaw);
|
Mat4f mcProjectionMatrix = new Mat4f(mcProjMatrixRaw);
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix.transpose();
|
mcProjectionMatrix.transpose();
|
||||||
|
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix = McObjectConverter.Convert(matrixStackIn.last().pose());
|
Mat4f mcModelViewMatrix = McObjectConverter.Convert(matrixStackIn.last().pose());
|
||||||
|
|
||||||
#elif MC_VER <= MC_1_20_4
|
#elif MC_VER <= MC_1_20_4
|
||||||
// get the matrices directly from MC
|
// get the matrices directly from MC
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrixStack.last().pose());
|
Mat4f mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrixStack.last().pose());
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix);
|
Mat4f mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix);
|
||||||
#else
|
#else
|
||||||
// MC combined the model view and projection matricies
|
// MC combined the model view and projection matricies
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix = McObjectConverter.Convert(projectionMatrix);
|
Mat4f mcModelViewMatrix = McObjectConverter.Convert(projectionMatrix);
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix = new Mat4f();
|
Mat4f mcProjectionMatrix = new Mat4f();
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix.setIdentity();
|
mcProjectionMatrix.setIdentity();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TODO move this into a common place
|
// TODO move this into a common place
|
||||||
|
float frameTime;
|
||||||
#if MC_VER < MC_1_21_1
|
#if MC_VER < MC_1_21_1
|
||||||
ClientApi.RENDER_STATE.frameTime = Minecraft.getInstance().getFrameTime();
|
frameTime = Minecraft.getInstance().getFrameTime();
|
||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
ClientApi.RENDER_STATE.frameTime = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks();
|
frameTime = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks();
|
||||||
#else
|
#else
|
||||||
ClientApi.RENDER_STATE.frameTime = Minecraft.getInstance().deltaTracker.getRealtimeDeltaTicks();
|
frameTime = Minecraft.getInstance().deltaTracker.getRealtimeDeltaTicks();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//LOGGER.info("\n\n" +
|
|
||||||
// "Level Mixin\n" +
|
|
||||||
// "Mc MVM: \n" + mcModelViewMatrix.toString() + "\n" +
|
|
||||||
// "Mc Proj: \n" + mcProjectionMatrix.toString()
|
|
||||||
//);
|
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
if (renderType.equals(RenderType.translucent()))
|
if (renderType.equals(RenderType.translucent()))
|
||||||
{
|
{
|
||||||
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(this.level),
|
ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level),
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
mcModelViewMatrix,
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
mcProjectionMatrix,
|
||||||
ClientApi.RENDER_STATE.frameTime
|
frameTime
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
// rendering handled via Fabric Api render event
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// FIXME completely disables rendering when sodium is installed
|
// FIXME completely disables rendering when sodium is installed
|
||||||
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
|
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
|
||||||
@@ -154,6 +137,4 @@ public class MixinLevelRenderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-48
@@ -1,48 +0,0 @@
|
|||||||
package com.seibel.distanthorizons.fabric.mixins.server;
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_4
|
|
||||||
|
|
||||||
import net.minecraft.world.entity.Entity;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
|
|
||||||
@Mixin(Entity.class)
|
|
||||||
public class MixinLevelTicks<T>
|
|
||||||
{
|
|
||||||
// dummy mixin to make the loader happy
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
import com.seibel.distanthorizons.common.wrappers.DependencySetupDoneCheck;
|
|
||||||
|
|
||||||
import net.minecraft.world.ticks.LevelTicks;
|
|
||||||
import net.minecraft.world.ticks.ScheduledTick;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(LevelTicks.class) // available in 1.18.2+, but only needed in 1.21.4+
|
|
||||||
public class MixinLevelTicks<T>
|
|
||||||
{
|
|
||||||
// TODO put in a common location
|
|
||||||
private static boolean isWorldGenThread()
|
|
||||||
{ return DependencySetupDoneCheck.isDone && DependencySetupDoneCheck.getIsCurrentThreadDistantGeneratorThread.get(); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Inject(method = "schedule", at = @At(value = "HEAD"), cancellable = true)
|
|
||||||
private void onChunkSave(ScheduledTick<T> tick, CallbackInfo ci)
|
|
||||||
{
|
|
||||||
// In MC 1.21.4 an error check was added to log attempting to schedule ticks for unloaded chunks
|
|
||||||
// this caused a lot of unnecessary errors when generating sand (FallingBlock.class).
|
|
||||||
if (isWorldGenThread())
|
|
||||||
{
|
|
||||||
ci.cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -8,8 +8,7 @@
|
|||||||
"server.MixinEntity",
|
"server.MixinEntity",
|
||||||
"server.MixinServerPlayer",
|
"server.MixinServerPlayer",
|
||||||
"server.MixinTracingExecutor",
|
"server.MixinTracingExecutor",
|
||||||
"server.MixinUtilBackgroundThread",
|
"server.MixinUtilBackgroundThread"
|
||||||
"server.MixinLevelTicks"
|
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
"client.MixinClientLevel",
|
"client.MixinClientLevel",
|
||||||
|
|||||||
@@ -118,14 +118,14 @@ public class ForgeMain extends AbstractModInitializer
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void subscribeRegisterCommandsEvent(Consumer<CommandDispatcher<CommandSourceStack>> eventHandler)
|
protected void subscribeRegisterCommandsEvent(Consumer<CommandDispatcher<CommandSourceStack>> eventHandler)
|
||||||
{ MinecraftForge.EVENT_BUS.addListener((RegisterCommandsEvent e) -> { eventHandler.accept(e.getDispatcher()); }); }
|
{
|
||||||
|
MinecraftForge.EVENT_BUS.addListener((RegisterCommandsEvent e) -> { eventHandler.accept(e.getDispatcher()); });
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void subscribeClientStartedEvent(Runnable eventHandler)
|
protected void subscribeClientStartedEvent(Runnable eventHandler)
|
||||||
{
|
{
|
||||||
// Just run the event handler, since there are no proper ClientLifecycleEvent for the client
|
// FIXME What event is this?
|
||||||
// to signify readiness other than FmlClientSetupEvent
|
|
||||||
eventHandler.run();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-1
@@ -156,7 +156,7 @@ public class MixinLevelRenderer
|
|||||||
}
|
}
|
||||||
else if (renderType.equals(RenderType.translucent()))
|
else if (renderType.equals(RenderType.translucent()))
|
||||||
{
|
{
|
||||||
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
|
ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
// render fade
|
// render fade
|
||||||
|
|||||||
+3
-3
@@ -5,7 +5,7 @@ org.gradle.caching=true
|
|||||||
|
|
||||||
# Mod Info
|
# Mod Info
|
||||||
mod_name=DistantHorizons
|
mod_name=DistantHorizons
|
||||||
mod_version=2.3.4-b
|
mod_version=2.3.3-b-dev
|
||||||
api_version=4.0.0
|
api_version=4.0.0
|
||||||
maven_group=com.seibel.distanthorizons
|
maven_group=com.seibel.distanthorizons
|
||||||
mod_readable_name=Distant Horizons
|
mod_readable_name=Distant Horizons
|
||||||
@@ -18,7 +18,7 @@ mod_issues=https://gitlab.com/jeseibel/distant-horizons/-/issues
|
|||||||
mod_discord=https://discord.gg/xAB8G4cENx
|
mod_discord=https://discord.gg/xAB8G4cENx
|
||||||
|
|
||||||
# Global Plugin Versions
|
# Global Plugin Versions
|
||||||
manifold_version=2025.1.20
|
manifold_version=2024.1.37
|
||||||
# 2023.1.17 can be used if there are mystery Java compiler issues
|
# 2023.1.17 can be used if there are mystery Java compiler issues
|
||||||
nightconfig_version=3.6.6
|
nightconfig_version=3.6.6
|
||||||
lz4_version=1.8.0
|
lz4_version=1.8.0
|
||||||
@@ -51,7 +51,7 @@ versionStr=
|
|||||||
|
|
||||||
# This defines what MC version Intellij will use for the preprocessor
|
# This defines what MC version Intellij will use for the preprocessor
|
||||||
# and what version is used automatically by build and run commands
|
# and what version is used automatically by build and run commands
|
||||||
mcVer=1.21.8
|
mcVer=1.21.5
|
||||||
|
|
||||||
# Defines the maximum amount of memory Minecraft is allowed when run in a development environment
|
# Defines the maximum amount of memory Minecraft is allowed when run in a development environment
|
||||||
#minecraftMemoryJavaArg="-Xmx4G"
|
#minecraftMemoryJavaArg="-Xmx4G"
|
||||||
|
|||||||
+17
-52
@@ -78,6 +78,13 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
|
private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
|
||||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
||||||
|
|
||||||
|
// private static SimpleChannel multiversePluginChannel;
|
||||||
|
|
||||||
|
// Not the cleanest way of passing this to the LOD renderer, but it'll have to do for now
|
||||||
|
public static Mat4f currentModelViewMatrix = new Mat4f();
|
||||||
|
public static Mat4f currentProjectionMatrix = new Mat4f();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -237,7 +244,16 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
// rendering //
|
// rendering //
|
||||||
//===========//
|
//===========//
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
@SubscribeEvent
|
||||||
|
public void beforeLevelRenderEvent(RenderLevelStageEvent event)
|
||||||
|
{
|
||||||
|
if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_SKY)
|
||||||
|
{
|
||||||
|
currentModelViewMatrix = McObjectConverter.Convert(event.getModelViewMatrix());
|
||||||
|
currentProjectionMatrix = McObjectConverter.Convert(event.getProjectionMatrix());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void afterLevelRenderEvent(RenderLevelStageEvent event)
|
public void afterLevelRenderEvent(RenderLevelStageEvent event)
|
||||||
{
|
{
|
||||||
@@ -256,56 +272,6 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
|
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public void afterLevelEntityRenderEvent(RenderLevelStageEvent.AfterEntities event)
|
|
||||||
{
|
|
||||||
ClientApi.INSTANCE.renderFade(
|
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
|
||||||
ClientApi.RENDER_STATE.frameTime,
|
|
||||||
ClientLevelWrapper.getWrapper((ClientLevel)event.getLevel())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public void afterLevelTranslucentRenderEvent(RenderLevelStageEvent.AfterTranslucentBlocks event)
|
|
||||||
{
|
|
||||||
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper((ClientLevel)event.getLevel()),
|
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
|
||||||
ClientApi.RENDER_STATE.frameTime
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public void afterLevelRenderEvent(RenderLevelStageEvent.AfterLevel event)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// should generally only need to be set once per game session
|
|
||||||
// allows DH to render directly to Optifine's level frame buffer,
|
|
||||||
// allowing better shader support
|
|
||||||
MinecraftRenderWrapper.INSTANCE.finalLevelFrameBufferId = GL32.glGetInteger(GL32.GL_FRAMEBUFFER_BINDING);
|
|
||||||
}
|
|
||||||
catch (Exception | Error e)
|
|
||||||
{
|
|
||||||
LOGGER.error("Unexpected error in afterLevelRenderEvent: "+e.getMessage(), e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ClientApi.INSTANCE.renderFadeOpaque(
|
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
|
||||||
ClientApi.RENDER_STATE.frameTime,
|
|
||||||
ClientLevelWrapper.getWrapper((ClientLevel)event.getLevel())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -316,5 +282,4 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy
|
|||||||
private static LevelAccessor GetEventLevel(LevelEvent e) { return e.getLevel(); }
|
private static LevelAccessor GetEventLevel(LevelEvent e) { return e.getLevel(); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import com.mojang.brigadier.CommandDispatcher;
|
|||||||
import com.seibel.distanthorizons.common.AbstractModInitializer;
|
import com.seibel.distanthorizons.common.AbstractModInitializer;
|
||||||
import com.seibel.distanthorizons.common.wrappers.gui.GetConfigScreen;
|
import com.seibel.distanthorizons.common.wrappers.gui.GetConfigScreen;
|
||||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||||
|
import com.seibel.distanthorizons.core.config.Config;
|
||||||
import com.seibel.distanthorizons.core.api.internal.ServerApi;
|
import com.seibel.distanthorizons.core.api.internal.ServerApi;
|
||||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||||
import com.seibel.distanthorizons.core.network.messages.AbstractNetworkMessage;
|
import com.seibel.distanthorizons.core.network.messages.AbstractNetworkMessage;
|
||||||
@@ -50,13 +51,9 @@ import java.util.function.Consumer;
|
|||||||
|
|
||||||
#if MC_VER < MC_1_20_6
|
#if MC_VER < MC_1_20_6
|
||||||
import net.neoforged.neoforge.client.ConfigScreenHandler;
|
import net.neoforged.neoforge.client.ConfigScreenHandler;
|
||||||
#elif MC_VER < MC_1_21_8
|
|
||||||
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
#else
|
#else
|
||||||
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
|
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,11 +72,6 @@ public class NeoforgeMain extends AbstractModInitializer
|
|||||||
{
|
{
|
||||||
this.onInitializeClient();
|
this.onInitializeClient();
|
||||||
eventBus.addListener(this::registerNetworkingClientServer);
|
eventBus.addListener(this::registerNetworkingClientServer);
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_8
|
|
||||||
#else
|
|
||||||
eventBus.addListener(this::registerClientPayloadEvent);
|
|
||||||
#endif
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// handles dedicated servers
|
// handles dedicated servers
|
||||||
@@ -107,12 +99,6 @@ public class NeoforgeMain extends AbstractModInitializer
|
|||||||
public void registerNetworkingServer(RegisterPayloadHandlersEvent event)
|
public void registerNetworkingServer(RegisterPayloadHandlersEvent event)
|
||||||
{ NeoforgePluginPacketSender.setPacketHandler(event, ServerApi.INSTANCE::pluginMessageReceived); }
|
{ NeoforgePluginPacketSender.setPacketHandler(event, ServerApi.INSTANCE::pluginMessageReceived); }
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_8
|
|
||||||
#else
|
|
||||||
public void registerClientPayloadEvent(RegisterClientPayloadHandlersEvent event)
|
|
||||||
{ NeoforgePluginPacketSender.registerClientPacketHandler(event); }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -155,9 +141,7 @@ public class NeoforgeMain extends AbstractModInitializer
|
|||||||
@Override
|
@Override
|
||||||
protected void subscribeClientStartedEvent(Runnable eventHandler)
|
protected void subscribeClientStartedEvent(Runnable eventHandler)
|
||||||
{
|
{
|
||||||
// Just run the event handler, since there are no proper ClientLifecycleEvent for the client
|
// FIXME What event is this?
|
||||||
// to signify readiness other than FmlClientSetupEvent
|
|
||||||
eventHandler.run();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-32
@@ -14,19 +14,10 @@ import java.util.Optional;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_8
|
|
||||||
#else
|
|
||||||
import net.neoforged.neoforge.client.network.ClientPacketDistributor;
|
|
||||||
import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
public class NeoforgePluginPacketSender extends AbstractPluginPacketSender
|
public class NeoforgePluginPacketSender extends AbstractPluginPacketSender
|
||||||
{
|
{
|
||||||
private static BiConsumer<IServerPlayerWrapper, AbstractNetworkMessage> packetConsumer;
|
private static BiConsumer<IServerPlayerWrapper, AbstractNetworkMessage> packetConsumer;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void setPacketHandler(RegisterPayloadHandlersEvent event, Consumer<AbstractNetworkMessage> consumer)
|
public static void setPacketHandler(RegisterPayloadHandlersEvent event, Consumer<AbstractNetworkMessage> consumer)
|
||||||
{ setPacketHandler(event, (player, buffer) -> consumer.accept(buffer)); }
|
{ setPacketHandler(event, (player, buffer) -> consumer.accept(buffer)); }
|
||||||
public static void setPacketHandler(RegisterPayloadHandlersEvent event, BiConsumer<IServerPlayerWrapper, AbstractNetworkMessage> consumer)
|
public static void setPacketHandler(RegisterPayloadHandlersEvent event, BiConsumer<IServerPlayerWrapper, AbstractNetworkMessage> consumer)
|
||||||
@@ -48,31 +39,9 @@ public class NeoforgePluginPacketSender extends AbstractPluginPacketSender
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_8
|
|
||||||
#else
|
|
||||||
public static void registerClientPacketHandler(RegisterClientPayloadHandlersEvent event)
|
|
||||||
{
|
|
||||||
// as of MC 1.21.7 Neo added a separate client network register
|
|
||||||
// https://github.com/neoforged/NeoForge/pull/2272
|
|
||||||
event.register(CommonPacketPayload.TYPE, (payload, context) ->
|
|
||||||
{
|
|
||||||
if (payload.message() != null)
|
|
||||||
{
|
|
||||||
packetConsumer.accept(null, payload.message());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendToServer(AbstractNetworkMessage message)
|
public void sendToServer(AbstractNetworkMessage message)
|
||||||
{
|
{ PacketDistributor.sendToServer(new CommonPacketPayload(message)); }
|
||||||
#if MC_VER < MC_1_21_8
|
|
||||||
PacketDistributor.sendToServer(new CommonPacketPayload(message));
|
|
||||||
#else
|
|
||||||
ClientPacketDistributor.sendToServer(new CommonPacketPayload(message));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendToClient(ServerPlayer serverPlayer, AbstractNetworkMessage message)
|
public void sendToClient(ServerPlayer serverPlayer, AbstractNetworkMessage message)
|
||||||
|
|||||||
+31
-117
@@ -22,87 +22,67 @@ package com.seibel.distanthorizons.neoforge.mixins.client;
|
|||||||
import com.seibel.distanthorizons.core.config.Config;
|
import com.seibel.distanthorizons.core.config.Config;
|
||||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
|
import net.minecraft.client.renderer.FogRenderer;
|
||||||
|
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
||||||
import net.minecraft.world.effect.MobEffects;
|
import net.minecraft.world.effect.MobEffects;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
|
||||||
#if MC_VER < MC_1_17_1
|
#if MC_VER < MC_1_17_1
|
||||||
import net.minecraft.world.level.material.FluidState;
|
import net.minecraft.world.level.material.FluidState;
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
import net.minecraft.world.level.material.FogType;
|
import net.minecraft.world.level.material.FogType;
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
|
||||||
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
import net.minecraft.world.level.material.FogType;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import com.mojang.blaze3d.shaders.FogShape;
|
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
|
||||||
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
|
||||||
import net.minecraft.client.renderer.FogParameters;
|
|
||||||
import org.joml.Vector4f;
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
#else
|
#else
|
||||||
|
import net.minecraft.client.renderer.FogParameters;
|
||||||
import net.minecraft.world.level.material.FogType;
|
import net.minecraft.world.level.material.FogType;
|
||||||
import net.minecraft.client.renderer.fog.FogRenderer;
|
import org.joml.Vector4f;
|
||||||
import net.minecraft.client.renderer.fog.FogData;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
|
||||||
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Mixin(FogRenderer.class)
|
@Mixin(FogRenderer.class)
|
||||||
public class MixinFogRenderer
|
public class MixinFogRenderer
|
||||||
{
|
{
|
||||||
// Using this instead of Float.MAX_VALUE because Sodium don't like it.
|
// Using this instead of Float.MAX_VALUE because Sodium don't like it.
|
||||||
@Unique
|
|
||||||
private static final float A_REALLY_REALLY_BIG_VALUE = 420694206942069.F;
|
private static final float A_REALLY_REALLY_BIG_VALUE = 420694206942069.F;
|
||||||
@Unique
|
|
||||||
private static final float A_EVEN_LARGER_VALUE = 42069420694206942069.F;
|
private static final float A_EVEN_LARGER_VALUE = 42069420694206942069.F;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_19_2
|
#if MC_VER == MC_1_17_1 || MC_VER == MC_1_18_2
|
||||||
@Inject(at = @At("RETURN"), method = "setupFog")
|
@Inject(at = @At("RETURN"),
|
||||||
private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, CallbackInfo callback)
|
method = "setupFog(Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/FogRenderer$FogMode;FZF)V",
|
||||||
|
remap = false)
|
||||||
|
private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float partTick, CallbackInfo callback)
|
||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
@Inject(at = @At("RETURN"), method = "setupFog")
|
@Inject(at = @At("RETURN"),
|
||||||
private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float g, CallbackInfo callback)
|
method = "setupFog(Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/FogRenderer$FogMode;FZF)V",
|
||||||
#elif MC_VER < MC_1_21_6
|
remap = true)
|
||||||
@Inject(at = @At("RETURN"), method = "setupFog", cancellable = true)
|
private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float partTick, CallbackInfo callback)
|
||||||
private static void disableSetupFog(Camera camera, FogMode fogMode, Vector4f vector4f, float f, boolean bl, float g, CallbackInfoReturnable<FogParameters> callback)
|
|
||||||
#else
|
#else
|
||||||
@Unique
|
@Inject(at = @At("RETURN"),
|
||||||
private static void unused()
|
method = "setupFog(Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/FogRenderer$FogMode;Lorg/joml/Vector4f;FZF)Lnet/minecraft/client/renderer/FogParameters;",
|
||||||
|
remap = true, cancellable = true)
|
||||||
|
private static void disableSetupFog(Camera camera, FogMode fogMode, Vector4f vector4f, float f, boolean bl, float partTick, CallbackInfoReturnable<FogParameters> callback)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if MC_VER < MC_1_21_6
|
boolean cameraNotInFluid = cameraNotInFluid(camera);
|
||||||
boolean cancelFog = cancelFog(camera, fogMode);
|
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
boolean cancelFog = cancelFog(camera);
|
|
||||||
#else
|
|
||||||
boolean cancelFog = cancelFog();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (cancelFog)
|
Entity entity = camera.getEntity();
|
||||||
|
boolean isSpecialFog = (entity instanceof LivingEntity) && ((LivingEntity) entity).hasEffect(MobEffects.BLINDNESS);
|
||||||
|
if (!isSpecialFog && cameraNotInFluid && fogMode == FogMode.FOG_TERRAIN
|
||||||
|
&& !SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).isFogStateSpecial()
|
||||||
|
&& !Config.Client.Advanced.Graphics.Fog.enableVanillaFog.get())
|
||||||
{
|
{
|
||||||
#if MC_VER < MC_1_17_1
|
#if MC_VER < MC_1_17_1
|
||||||
RenderSystem.fogStart(A_REALLY_REALLY_BIG_VALUE);
|
RenderSystem.fogStart(A_REALLY_REALLY_BIG_VALUE);
|
||||||
@@ -110,77 +90,12 @@ public class MixinFogRenderer
|
|||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
RenderSystem.setShaderFogStart(A_REALLY_REALLY_BIG_VALUE);
|
RenderSystem.setShaderFogStart(A_REALLY_REALLY_BIG_VALUE);
|
||||||
RenderSystem.setShaderFogEnd(A_EVEN_LARGER_VALUE);
|
RenderSystem.setShaderFogEnd(A_EVEN_LARGER_VALUE);
|
||||||
#elif MC_VER < MC_1_21_6
|
|
||||||
callback.setReturnValue(FogParameters.NO_FOG);
|
|
||||||
#else
|
#else
|
||||||
|
callback.setReturnValue(FogParameters.NO_FOG);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
#else
|
|
||||||
|
|
||||||
// In MC's FogRenderer they clamp the "renderDistanceEnd" fog field to the render distance,
|
|
||||||
// which prevents us from disabling the vanilla fog.
|
|
||||||
// This mixin fires after they set the "renderDistanceEnd" so we can change it.
|
|
||||||
@WrapOperation(
|
|
||||||
method = "setupFog",
|
|
||||||
at = @At(
|
|
||||||
value = "FIELD",
|
|
||||||
target = "Lnet/minecraft/client/renderer/fog/FogData;renderDistanceEnd:F",
|
|
||||||
opcode = org.objectweb.asm.Opcodes.PUTFIELD
|
|
||||||
)
|
|
||||||
)
|
|
||||||
private void onSetRenderDistanceEnd(FogData instance, float value, Operation<Void> original)
|
|
||||||
{
|
|
||||||
if (cancelFog())
|
|
||||||
{
|
|
||||||
instance.environmentalStart = A_REALLY_REALLY_BIG_VALUE;
|
|
||||||
instance.environmentalEnd = A_EVEN_LARGER_VALUE;
|
|
||||||
|
|
||||||
instance.renderDistanceStart = A_REALLY_REALLY_BIG_VALUE;
|
|
||||||
instance.renderDistanceEnd = A_EVEN_LARGER_VALUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always call the original with the modified or original value
|
|
||||||
original.call(instance, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
@Unique
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
private static boolean cancelFog(Camera camera, FogMode fogMode)
|
|
||||||
#else
|
|
||||||
private static boolean cancelFog()
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
Entity entity = camera.getEntity();
|
|
||||||
#else
|
|
||||||
Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera();
|
|
||||||
Entity entity = camera.getEntity();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
boolean cameraNotInFluid = cameraNotInFluid(camera);
|
|
||||||
boolean isSpecialFog = (entity instanceof LivingEntity) && ((LivingEntity) entity).hasEffect(MobEffects.BLINDNESS);
|
|
||||||
|
|
||||||
boolean cancelFog = !isSpecialFog;
|
|
||||||
cancelFog = cancelFog && cameraNotInFluid;
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
cancelFog = cancelFog && (fogMode == FogMode.FOG_TERRAIN);
|
|
||||||
#endif
|
|
||||||
cancelFog = cancelFog && !SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).isFogStateSpecial();
|
|
||||||
cancelFog = cancelFog && !Config.Client.Advanced.Graphics.Fog.enableVanillaFog.get();
|
|
||||||
|
|
||||||
return cancelFog;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Unique
|
|
||||||
private static boolean cameraNotInFluid(Camera camera)
|
private static boolean cameraNotInFluid(Camera camera)
|
||||||
{
|
{
|
||||||
#if MC_VER < MC_1_17_1
|
#if MC_VER < MC_1_17_1
|
||||||
@@ -195,5 +110,4 @@ public class MixinFogRenderer
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+77
-111
@@ -19,53 +19,39 @@
|
|||||||
|
|
||||||
package com.seibel.distanthorizons.neoforge.mixins.client;
|
package com.seibel.distanthorizons.neoforge.mixins.client;
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
#if MC_VER < MC_1_19_4
|
||||||
|
import com.mojang.math.Matrix4f;
|
||||||
|
#else
|
||||||
|
import com.seibel.distanthorizons.core.util.math.Mat4f;
|
||||||
|
import com.seibel.distanthorizons.neoforge.NeoforgeClientProxy;
|
||||||
|
import net.minecraft.client.Camera;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
|
import net.minecraft.client.renderer.LightTexture;
|
||||||
|
import org.joml.Matrix4f;
|
||||||
|
#endif
|
||||||
|
import com.seibel.distanthorizons.common.wrappers.McObjectConverter;
|
||||||
|
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
|
||||||
|
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||||
|
import com.seibel.distanthorizons.core.config.Config;
|
||||||
|
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
import net.minecraft.client.renderer.LevelRenderer;
|
import net.minecraft.client.renderer.LevelRenderer;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.neoforged.neoforge.client.event.RenderLevelStageEvent;
|
|
||||||
import org.joml.Matrix4f;
|
|
||||||
#else
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
|
||||||
import net.minecraft.client.renderer.chunk.ChunkSectionsToRender;
|
|
||||||
import net.minecraft.client.Camera;
|
|
||||||
import net.minecraft.client.DeltaTracker;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.renderer.LevelRenderer;
|
|
||||||
|
|
||||||
import org.joml.Matrix4f;
|
|
||||||
import org.joml.Matrix4fc;
|
|
||||||
import org.joml.Vector4f;
|
|
||||||
|
|
||||||
import com.mojang.blaze3d.buffers.GpuBufferSlice;
|
|
||||||
import com.mojang.blaze3d.resource.GraphicsResourceAllocator;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
|
|
||||||
import com.seibel.distanthorizons.neoforge.NeoforgeClientProxy;
|
|
||||||
import com.seibel.distanthorizons.common.wrappers.McObjectConverter;
|
|
||||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
|
||||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
|
||||||
import com.seibel.distanthorizons.core.config.Config;
|
|
||||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
|
||||||
import com.seibel.distanthorizons.core.util.math.Mat4f;
|
|
||||||
import com.seibel.distanthorizons.coreapi.ModInfo;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
#if MC_VER < MC_1_17_1
|
||||||
|
import org.lwjgl.opengl.GL15;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to mix in DH's rendering code
|
* This class is used to mix in DH's rendering code
|
||||||
* before Minecraft starts rendering blocks.
|
* before Minecraft starts rendering blocks.
|
||||||
@@ -84,66 +70,73 @@ public class MixinLevelRenderer
|
|||||||
#endif
|
#endif
|
||||||
private ClientLevel level;
|
private ClientLevel level;
|
||||||
|
|
||||||
@Unique
|
|
||||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
|
||||||
|
|
||||||
|
#if MC_VER < MC_1_17_1
|
||||||
|
@Inject(at = @At("HEAD"),
|
||||||
#if MC_VER < MC_1_21_6
|
method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDD)V",
|
||||||
@Inject(at = @At("HEAD"), method = "renderSectionLayer", cancellable = true)
|
cancellable = true)
|
||||||
private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f modelViewMatrix, Matrix4f projectionMatrix, CallbackInfo callback)
|
private void renderChunkLayer(RenderType renderType, PoseStack matrixStackIn, double xIn, double yIn, double zIn, CallbackInfo callback)
|
||||||
|
#elif MC_VER < MC_1_19_4
|
||||||
|
@Inject(at = @At("HEAD"),
|
||||||
|
method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V",
|
||||||
|
cancellable = true)
|
||||||
|
private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback)
|
||||||
|
#elif MC_VER < MC_1_20_2
|
||||||
|
@Inject(at = @At("HEAD"),
|
||||||
|
method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V",
|
||||||
|
cancellable = true)
|
||||||
|
private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback)
|
||||||
|
#elif MC_VER < MC_1_20_6
|
||||||
|
@Inject(at = @At("HEAD"),
|
||||||
|
method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V",
|
||||||
|
cancellable = true)
|
||||||
|
private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double camX, double camY, double camZ, Matrix4f projectionMatrix, CallbackInfo callback)
|
||||||
#else
|
#else
|
||||||
@Inject(at = @At("HEAD"), method = "renderLevel", cancellable = true)
|
@Inject(at = @At("HEAD"),
|
||||||
private void onRenderLevel(GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker, boolean renderBlockOutline, Camera camera, Matrix4f positionMatrix, Matrix4f projectionMatrix, GpuBufferSlice gpuBufferSlice, Vector4f skyColor, boolean thinFog, CallbackInfo callback)
|
method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;DDDLorg/joml/Matrix4f;Lorg/joml/Matrix4f;)V",
|
||||||
#endif
|
cancellable = true)
|
||||||
|
private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f projectionMatrix, Matrix4f frustumMatrix, CallbackInfo callback)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
#if MC_VER < MC_1_21_6
|
#if MC_VER == MC_1_16_5
|
||||||
// MC combined the model view and projection matricies
|
// get the matrices from the OpenGL fixed pipeline
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrix);
|
float[] mcProjMatrixRaw = new float[16];
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix);
|
GL15.glGetFloatv(GL15.GL_PROJECTION_MATRIX, mcProjMatrixRaw);
|
||||||
|
Mat4f mcProjectionMatrix = new Mat4f(mcProjMatrixRaw);
|
||||||
|
mcProjectionMatrix.transpose();
|
||||||
|
|
||||||
|
Mat4f mcModelViewMatrix = McObjectConverter.Convert(matrixStackIn.last().pose());
|
||||||
|
|
||||||
|
#elif MC_VER <= MC_1_20_4
|
||||||
|
// get the matrices directly from MC
|
||||||
|
Mat4f mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrixStack.last().pose());
|
||||||
|
Mat4f mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix);
|
||||||
#else
|
#else
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix);
|
// get the matrices from neoForge's render event.
|
||||||
|
// We can't call the renderer there because we don't have access to the level that's being rendered
|
||||||
|
Mat4f mcModelViewMatrix = NeoforgeClientProxy.currentModelViewMatrix;
|
||||||
|
Mat4f mcProjectionMatrix = NeoforgeClientProxy.currentProjectionMatrix;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//LOGGER.info("\n\n" +
|
|
||||||
// "Level Mixin\n" +
|
|
||||||
// "Mc MVM: \n" + ClientApi.RENDER_STATE.mcModelViewMatrix.toString() + "\n" +
|
|
||||||
// "Mc Proj: \n" + ClientApi.RENDER_STATE.mcProjectionMatrix.toString()
|
|
||||||
//);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
float frameTime;
|
||||||
#if MC_VER < MC_1_21_1
|
#if MC_VER < MC_1_21_1
|
||||||
ClientApi.RENDER_STATE.frameTime = Minecraft.getInstance().getFrameTime();
|
frameTime = Minecraft.getInstance().getFrameTime();
|
||||||
#elif MC_VER < MC_1_21_3
|
#elif MC_VER < MC_1_21_3
|
||||||
ClientApi.RENDER_STATE.frameTime = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks();
|
frameTime = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks();
|
||||||
#else
|
#else
|
||||||
ClientApi.RENDER_STATE.frameTime = Minecraft.getInstance().deltaTracker.getRealtimeDeltaTicks();
|
frameTime = Minecraft.getInstance().deltaTracker.getRealtimeDeltaTicks();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
|
|
||||||
// only crash during development
|
|
||||||
if (ModInfo.IS_DEV_BUILD)
|
|
||||||
{
|
|
||||||
ClientApi.RENDER_STATE.canRenderOrThrow();
|
|
||||||
}
|
|
||||||
|
|
||||||
// render LODs
|
// render LODs
|
||||||
if (renderType.equals(RenderType.solid()))
|
if (renderType.equals(RenderType.solid()))
|
||||||
{
|
{
|
||||||
ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level),
|
ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
|
||||||
ClientApi.RENDER_STATE.frameTime);
|
|
||||||
}
|
}
|
||||||
else if (renderType.equals(RenderType.translucent()))
|
else if (renderType.equals(RenderType.translucent()))
|
||||||
{
|
{
|
||||||
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(this.level),
|
ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime);
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
|
||||||
ClientApi.RENDER_STATE.frameTime);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// render fade
|
// render fade
|
||||||
@@ -153,22 +146,21 @@ public class MixinLevelRenderer
|
|||||||
if (renderType.equals(RenderType.cutout()))
|
if (renderType.equals(RenderType.cutout()))
|
||||||
{
|
{
|
||||||
ClientApi.INSTANCE.renderFadeOpaque(
|
ClientApi.INSTANCE.renderFadeOpaque(
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
mcModelViewMatrix,
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
mcProjectionMatrix,
|
||||||
ClientApi.RENDER_STATE.frameTime,
|
frameTime,
|
||||||
ClientLevelWrapper.getWrapper(this.level)
|
ClientLevelWrapper.getWrapper(this.level)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if (renderType.equals(RenderType.tripwire()))
|
else if (renderType.equals(RenderType.tripwire()))
|
||||||
{
|
{
|
||||||
ClientApi.INSTANCE.renderFade(
|
ClientApi.INSTANCE.renderFade(
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
mcModelViewMatrix,
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
mcProjectionMatrix,
|
||||||
ClientApi.RENDER_STATE.frameTime,
|
frameTime,
|
||||||
ClientLevelWrapper.getWrapper(this.level)
|
ClientLevelWrapper.getWrapper(this.level)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
|
if (Config.Client.Advanced.Debugging.lodOnlyMode.get())
|
||||||
{
|
{
|
||||||
@@ -177,30 +169,4 @@ public class MixinLevelRenderer
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_6
|
|
||||||
|
|
||||||
// formerly handled in renderChunkLayer()
|
|
||||||
|
|
||||||
#else
|
|
||||||
@Inject(at = @At("HEAD"), method = "prepareChunkRenders", cancellable = true)
|
|
||||||
private void renderChunkLayer(Matrix4fc modelViewMatrix, double d, double e, double f, CallbackInfoReturnable<ChunkSectionsToRender> callback)
|
|
||||||
{
|
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrix);
|
|
||||||
|
|
||||||
// only crash during development
|
|
||||||
if (ModInfo.IS_DEV_BUILD)
|
|
||||||
{
|
|
||||||
ClientApi.RENDER_STATE.canRenderOrThrow();
|
|
||||||
}
|
|
||||||
|
|
||||||
ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level),
|
|
||||||
ClientApi.RENDER_STATE.mcModelViewMatrix,
|
|
||||||
ClientApi.RENDER_STATE.mcProjectionMatrix,
|
|
||||||
ClientApi.RENDER_STATE.frameTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-46
@@ -1,46 +0,0 @@
|
|||||||
package com.seibel.distanthorizons.neoforge.mixins.server;
|
|
||||||
|
|
||||||
#if MC_VER < MC_1_21_4
|
|
||||||
|
|
||||||
import net.minecraft.world.entity.Entity;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
|
|
||||||
@Mixin(Entity.class)
|
|
||||||
public class MixinLevelTicks<T>
|
|
||||||
{
|
|
||||||
// dummy mixin to make the loader happy
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
import com.seibel.distanthorizons.common.wrappers.DependencySetupDoneCheck;
|
|
||||||
import net.minecraft.world.ticks.LevelTicks;
|
|
||||||
import net.minecraft.world.ticks.ScheduledTick;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(LevelTicks.class) // available in 1.18.2+, but only needed in 1.21.4+
|
|
||||||
public class MixinLevelTicks<T>
|
|
||||||
{
|
|
||||||
// TODO put in a common location
|
|
||||||
private static boolean isWorldGenThread()
|
|
||||||
{ return DependencySetupDoneCheck.isDone && DependencySetupDoneCheck.getIsCurrentThreadDistantGeneratorThread.get(); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Inject(method = "schedule", at = @At(value = "HEAD"), cancellable = true)
|
|
||||||
private void onChunkSave(ScheduledTick<T> tick, CallbackInfo ci)
|
|
||||||
{
|
|
||||||
// In MC 1.21.4 an error check was added to log attempting to schedule ticks for unloaded chunks
|
|
||||||
// this caused a lot of unnecessary errors when generating sand (FallingBlock.class).
|
|
||||||
if (isWorldGenThread())
|
|
||||||
{
|
|
||||||
ci.cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -8,8 +8,7 @@
|
|||||||
"server.MixinServerPlayer",
|
"server.MixinServerPlayer",
|
||||||
"server.MixinTFChunkGenerator",
|
"server.MixinTFChunkGenerator",
|
||||||
"server.MixinTracingExecutor",
|
"server.MixinTracingExecutor",
|
||||||
"server.MixinUtilBackgroundThread",
|
"server.MixinUtilBackgroundThread"
|
||||||
"server.MixinLevelTicks"
|
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
"client.MixinClientPacketListener",
|
"client.MixinClientPacketListener",
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ loaderVersion = "*" # // mandatory. Allow all forge versions as we are definding
|
|||||||
license = "LGPL"
|
license = "LGPL"
|
||||||
issueTrackerURL = "${issues}"
|
issueTrackerURL = "${issues}"
|
||||||
|
|
||||||
# https://docs.neoforged.net/docs/gettingstarted/modfiles/#neoforgemodstoml
|
|
||||||
|
|
||||||
|
|
||||||
[[mods]] #//mandatory
|
[[mods]] #//mandatory
|
||||||
modId = "distanthorizons" #//mandatory
|
modId = "distanthorizons" #//mandatory
|
||||||
@@ -34,11 +32,4 @@ issueTrackerURL = "${issues}"
|
|||||||
type = "required"
|
type = "required"
|
||||||
versionRange = "${compatible_forgemc_versions}" # Where we set what version of mc it is avalible for
|
versionRange = "${compatible_forgemc_versions}" # Where we set what version of mc it is avalible for
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
side = "BOTH"
|
||||||
|
|
||||||
[[dependencies.distanthorizons]]
|
|
||||||
modId = "neoforge"
|
|
||||||
type = "required"
|
|
||||||
versionRange = "${neoforge_version_range}"
|
|
||||||
ordering = "NONE"
|
|
||||||
side = "BOTH"
|
|
||||||
@@ -24,7 +24,7 @@ fabric_api_version=0.42.0+1.16
|
|||||||
immersive_portals_version=
|
immersive_portals_version=
|
||||||
canvas_version=
|
canvas_version=
|
||||||
|
|
||||||
# iris - needs 1.7.4+ to support the DH API
|
# iris - needs 1.7.4+ to support the DH API
|
||||||
fabric_incompatibility_list={ "iris": "*" }
|
fabric_incompatibility_list={ "iris": "*" }
|
||||||
fabric_recommend_list={}
|
fabric_recommend_list={}
|
||||||
|
|
||||||
@@ -44,9 +44,6 @@ fabric_api_version=0.42.0+1.16
|
|||||||
|
|
||||||
# Forge loader
|
# Forge loader
|
||||||
forge_version=36.2.39
|
forge_version=36.2.39
|
||||||
# Neo not used but the variable still needs to be defined to make gradle happy
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# Forge mod versions
|
# Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=4044290
|
terraforged_version=4044290
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ fabric_api_version=0.46.1+1.17
|
|||||||
immersive_portals_version=
|
immersive_portals_version=
|
||||||
canvas_version=
|
canvas_version=
|
||||||
|
|
||||||
# iris - needs 1.7.4+ to support the DH API
|
# iris - needs 1.7.4+ to support the DH API
|
||||||
fabric_incompatibility_list={ "iris": "*" }
|
fabric_incompatibility_list={ "iris": "*" }
|
||||||
fabric_recommend_list={}
|
fabric_recommend_list={}
|
||||||
|
|
||||||
@@ -43,9 +43,6 @@ fabric_api_version=0.46.1+1.17
|
|||||||
|
|
||||||
# Forge loader
|
# Forge loader
|
||||||
forge_version=37.1.1
|
forge_version=37.1.1
|
||||||
# Neo not used but the variable still needs to be defined to make gradle happy
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# Forge mod versions
|
# Forge mod versions
|
||||||
starlight_version_forge=3457784
|
starlight_version_forge=3457784
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -52,9 +52,6 @@ quilted_api_version=1.0.0-beta.28+0.67.0-1.18.2
|
|||||||
|
|
||||||
# Forge loader
|
# Forge loader
|
||||||
forge_version=40.2.10
|
forge_version=40.2.10
|
||||||
# Neo not used but the variable still needs to be defined to make gradle happy
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# Forge mod versions
|
# Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -43,9 +43,6 @@ fabric_api_version=0.76.1+1.19.2
|
|||||||
|
|
||||||
# Forge loader
|
# Forge loader
|
||||||
forge_version=43.3.2
|
forge_version=43.3.2
|
||||||
# Neo not used but the variable still needs to be defined to make gradle happy
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# Forge mod versions
|
# Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -42,9 +42,6 @@ fabric_api_version=0.87.1+1.19.4
|
|||||||
|
|
||||||
# Forge loader
|
# Forge loader
|
||||||
forge_version=45.2.4
|
forge_version=45.2.4
|
||||||
# Neo not used but the variable still needs to be defined to make gradle happy
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# Forge mod versions
|
# Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -42,9 +42,6 @@ fabric_api_version=0.90.4+1.20.1
|
|||||||
|
|
||||||
# Forge loader
|
# Forge loader
|
||||||
forge_version=47.2.1
|
forge_version=47.2.1
|
||||||
# Neo not used but the variable still needs to be defined to make gradle happy
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# Forge mod versions
|
# Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -42,9 +42,6 @@ fabric_api_version=0.90.4+1.20.2
|
|||||||
|
|
||||||
# Forge loader
|
# Forge loader
|
||||||
forge_version=48.0.13
|
forge_version=48.0.13
|
||||||
# Neo not used but the variable still needs to be defined to make gradle happy
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# Forge mod versions
|
# Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -43,9 +43,7 @@ fabric_api_version=0.91.2+1.20.4
|
|||||||
|
|
||||||
# (Neo)Forge loader
|
# (Neo)Forge loader
|
||||||
forge_version=49.1.13
|
forge_version=49.1.13
|
||||||
neoforge_version=20.4.246
|
neoforge_version=20.4.233
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
# (Neo)Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -43,9 +43,7 @@ fabric_api_version=0.97.8+1.20.6
|
|||||||
|
|
||||||
# (Neo)Forge loader
|
# (Neo)Forge loader
|
||||||
forge_version=50.0.19
|
forge_version=50.0.19
|
||||||
neoforge_version=20.6.136
|
neoforge_version=20.6.70-beta
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
# (Neo)Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -43,9 +43,7 @@ fabric_api_version=0.115.0+1.21.1
|
|||||||
|
|
||||||
# (Neo)Forge loader
|
# (Neo)Forge loader
|
||||||
forge_version=
|
forge_version=
|
||||||
neoforge_version=21.1.192
|
neoforge_version=21.1.92
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
# (Neo)Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -43,9 +43,7 @@ fabric_api_version=0.110.0+1.21.3
|
|||||||
|
|
||||||
# (Neo)Forge loader
|
# (Neo)Forge loader
|
||||||
forge_version=
|
forge_version=
|
||||||
neoforge_version=21.3.86
|
neoforge_version=21.3.11-beta
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
# (Neo)Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -42,10 +42,7 @@ fabric_api_version=0.110.5+1.21.4
|
|||||||
|
|
||||||
# (Neo)Forge loader
|
# (Neo)Forge loader
|
||||||
forge_version=
|
forge_version=
|
||||||
neoforge_version=21.4.147
|
neoforge_version=21.4.3-beta
|
||||||
# version range may not be necessary, but having compiled DH for an older version caused issues with shaders
|
|
||||||
neoforge_version_range=[21.4.147,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
# (Neo)Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# 1.21.5 version
|
# 1.21.4 version
|
||||||
java_version=21
|
java_version=21
|
||||||
minecraft_version=1.21.5
|
minecraft_version=1.21.5
|
||||||
parchment_version=1.21:2024.07.28
|
parchment_version=1.21:2024.07.28
|
||||||
@@ -42,9 +42,7 @@ fabric_api_version=0.119.5+1.21.5
|
|||||||
|
|
||||||
# (Neo)Forge loader
|
# (Neo)Forge loader
|
||||||
forge_version=
|
forge_version=
|
||||||
neoforge_version=21.5.87
|
neoforge_version=21.5.0-beta
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
# (Neo)Forge mod versions
|
||||||
starlight_version_forge=
|
starlight_version_forge=
|
||||||
terraforged_version=
|
terraforged_version=
|
||||||
|
|||||||
@@ -1,58 +0,0 @@
|
|||||||
# 1.21.6 version
|
|
||||||
java_version=21
|
|
||||||
minecraft_version=1.21.6
|
|
||||||
parchment_version=1.21:2024.07.28
|
|
||||||
compatible_minecraft_versions=["1.21.6"]
|
|
||||||
accessWidenerVersion=1_21_4
|
|
||||||
builds_for=fabric,neoforge
|
|
||||||
# forge is broken due to gradle/build script issues
|
|
||||||
|
|
||||||
# Netty
|
|
||||||
netty_version=4.1.97.Final
|
|
||||||
|
|
||||||
# Fabric loader
|
|
||||||
fabric_loader_version=0.16.13
|
|
||||||
fabric_api_version=0.127.0+1.21.6
|
|
||||||
modmenu_version=15.0.0-beta.2
|
|
||||||
starlight_version_fabric=
|
|
||||||
phosphor_version_fabric=
|
|
||||||
lithium_version=
|
|
||||||
sodium_version=mc1.21.6-0.6.13-fabric
|
|
||||||
iris_version=1.9.0+1.21.6-fabric
|
|
||||||
bclib_version=
|
|
||||||
immersive_portals_version=
|
|
||||||
canvas_version=
|
|
||||||
|
|
||||||
fabric_incompatibility_list={ }
|
|
||||||
fabric_recommend_list={}
|
|
||||||
|
|
||||||
# Fabric mod run
|
|
||||||
# 0 = Don't enable and don't run
|
|
||||||
# 1 = Can be referenced in code but doesn't run
|
|
||||||
# 2 = Can be referenced in code and runs in client
|
|
||||||
enable_starlight=0
|
|
||||||
enable_phosphor=0
|
|
||||||
enable_sodium=1
|
|
||||||
enable_lithium=0
|
|
||||||
enable_iris=1
|
|
||||||
enable_bclib=0
|
|
||||||
enable_immersive_portals=0
|
|
||||||
enable_canvas=0
|
|
||||||
|
|
||||||
# (Neo)Forge loader
|
|
||||||
forge_version=
|
|
||||||
neoforge_version=21.6.20-beta
|
|
||||||
# around 6.19 neo changed how their render API works, failing to meet this causes the game to crash
|
|
||||||
neoforge_version_range=[21.6.19-beta,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
|
||||||
starlight_version_forge=
|
|
||||||
terraforged_version=
|
|
||||||
|
|
||||||
# (Neo)Forge mod run
|
|
||||||
# 0 = Don't enable and don't run
|
|
||||||
# 1 = Can be referenced in code but doesn't run
|
|
||||||
# 2 = Can be referenced in code and runs in client
|
|
||||||
enable_starlight_forge=0
|
|
||||||
enable_terraforged=0
|
|
||||||
enable_terrafirmacraft=0
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# 1.21.7 version
|
|
||||||
java_version=21
|
|
||||||
minecraft_version=1.21.8
|
|
||||||
parchment_version=1.21:2024.07.28
|
|
||||||
compatible_minecraft_versions=["1.21.8"]
|
|
||||||
accessWidenerVersion=1_21_4
|
|
||||||
builds_for=fabric,neoforge
|
|
||||||
# forge is broken due to gradle/build script issues
|
|
||||||
|
|
||||||
# Netty
|
|
||||||
netty_version=4.1.97.Final
|
|
||||||
|
|
||||||
# Fabric loader
|
|
||||||
fabric_loader_version=0.16.13
|
|
||||||
fabric_api_version=0.129.0+1.21.8
|
|
||||||
modmenu_version=15.0.0-beta.3
|
|
||||||
starlight_version_fabric=
|
|
||||||
phosphor_version_fabric=
|
|
||||||
lithium_version=
|
|
||||||
sodium_version=mc1.21.6-0.6.13-fabric
|
|
||||||
iris_version=1.9.1+1.21.7-fabric
|
|
||||||
bclib_version=
|
|
||||||
immersive_portals_version=
|
|
||||||
canvas_version=
|
|
||||||
|
|
||||||
fabric_incompatibility_list={ }
|
|
||||||
fabric_recommend_list={}
|
|
||||||
|
|
||||||
# Fabric mod run
|
|
||||||
# 0 = Don't enable and don't run
|
|
||||||
# 1 = Can be referenced in code but doesn't run
|
|
||||||
# 2 = Can be referenced in code and runs in client
|
|
||||||
enable_starlight=0
|
|
||||||
enable_phosphor=0
|
|
||||||
enable_sodium=1
|
|
||||||
enable_lithium=0
|
|
||||||
enable_iris=1
|
|
||||||
enable_bclib=0
|
|
||||||
enable_immersive_portals=0
|
|
||||||
enable_canvas=0
|
|
||||||
|
|
||||||
# (Neo)Forge loader
|
|
||||||
forge_version=
|
|
||||||
neoforge_version=21.8.2-beta
|
|
||||||
# around 6.19 neo changed how their render API works, failing to meet this causes the game to crash
|
|
||||||
neoforge_version_range=[*,)
|
|
||||||
|
|
||||||
# (Neo)Forge mod versions
|
|
||||||
starlight_version_forge=
|
|
||||||
terraforged_version=
|
|
||||||
|
|
||||||
# (Neo)Forge mod run
|
|
||||||
# 0 = Don't enable and don't run
|
|
||||||
# 1 = Can be referenced in code but doesn't run
|
|
||||||
# 2 = Can be referenced in code and runs in client
|
|
||||||
enable_starlight_forge=0
|
|
||||||
enable_terraforged=0
|
|
||||||
enable_terrafirmacraft=0
|
|
||||||
Reference in New Issue
Block a user