Skip to content

Commit 1cf20a6

Browse files
committed
Minecraft 1.18.0 backport
Signed-off-by: Lilly Rose Berner <lilly@lostluma.net>
1 parent a617f25 commit 1cf20a6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+644
-307
lines changed

build-logic/src/main/kotlin/dynamic_fps.java.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ java {
66
withSourcesJar()
77

88
toolchain {
9-
languageVersion = JavaLanguageVersion.of(21)
9+
languageVersion = JavaLanguageVersion.of(17)
1010
}
1111
}
1212

1313
tasks.withType<JavaCompile> {
1414
options.encoding = "UTF-8"
1515

1616
javaCompiler = javaToolchains.compilerFor {
17-
languageVersion = JavaLanguageVersion.of(21)
17+
languageVersion = JavaLanguageVersion.of(17)
1818
}
1919
}

gradle.properties

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ maven_group = juliand665
1313
archives_name = dynamic-fps
1414

1515
# File naming version
16-
minecraft_version = 1.21.5
16+
minecraft_version = 1.18.0
1717
# Version for publishing
18-
minecraft_version_min = 1.21.5
19-
minecraft_version_max = 1.21.5
18+
minecraft_version_min = 1.18
19+
minecraft_version_max = 1.18.2
2020

21-
enabled_platforms=fabric,quilt
21+
enabled_platforms=fabric,forge,quilt

gradle/libs.versions.toml

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
[versions]
2-
minecraft = "1.21.5"
2+
minecraft = "1.18.2"
33

44
# Platform libraries
55

66
fabric_loader = "0.15.10"
7-
fabric_api = "0.118.2+1.21.5"
7+
fabric_api = "0.77.0+1.18.2"
88

9-
forge = "1.21.3-53.0.7"
9+
forge = "1.18.2-40.2.17"
1010

11-
neoforge = "21.3.0-beta"
11+
neoforge = "20.4.237"
1212

1313
quilt_loader = "0.25.0"
1414

@@ -18,8 +18,8 @@ battery = "1.3.0"
1818

1919
# Modding libraries
2020

21-
modmenu = "11.0.0-beta.1"
22-
cloth_config = "15.0.127"
21+
modmenu = "3.2.5"
22+
cloth_config = "6.2.57"
2323

2424
mixinextras = "0.4.1"
2525

platforms/common/src/main/java/dynamic_fps/impl/DynamicFPSMod.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
import dynamic_fps.impl.util.FallbackConfigScreen;
1717
import dynamic_fps.impl.util.Logging;
1818
import dynamic_fps.impl.feature.state.OptionHolder;
19+
import dynamic_fps.impl.util.ModCompatHelper;
1920
import dynamic_fps.impl.util.ResourceLocations;
2021
import dynamic_fps.impl.util.Threads;
2122
import dynamic_fps.impl.util.Version;
2223
import dynamic_fps.impl.feature.volume.SmoothVolumeHandler;
2324
import dynamic_fps.impl.util.duck.DuckLoadingOverlay;
2425
import dynamic_fps.impl.feature.state.WindowObserver;
2526
import dynamic_fps.impl.service.Platform;
27+
import dynamic_fps.impl.util.duck.DuckScreen;
2628
import net.lostluma.battery.api.State;
2729
import net.minecraft.Util;
2830
import net.minecraft.client.Minecraft;
@@ -190,7 +192,7 @@ public static GraphicsState graphicsState() {
190192
}
191193

192194
public static boolean shouldShowLevels() {
193-
return isDisabled() || !isLevelCoveredByOverlay();
195+
return isDisabled() || !(isLevelCoveredByScreen() || isLevelCoveredByOverlay());
194196
}
195197

196198
public static void onBatteryChargeChanged(int before, int after) {
@@ -214,6 +216,8 @@ public static void onBatteryStatusChanged(State before, State after) {
214216
private static void doInit() {
215217
initClickHandler();
216218
SmoothVolumeHandler.init();
219+
// NOTE: Init battery tracker first here
220+
// Since the idle handler queries it for info
217221

218222
if (!BatteryTracker.isFeatureEnabled()) {
219223
IdleHandler.init();
@@ -227,6 +231,8 @@ private static void doInit() {
227231
Threads.runOnMainThread(IdleHandler::init);
228232
});
229233
}
234+
235+
ModCompatHelper.init();
230236
}
231237

232238
private static void initClickHandler() {
@@ -239,6 +245,11 @@ private static void initClickHandler() {
239245
clickHandler = new ClickIgnoreHandler(window.address());
240246
}
241247
}
248+
249+
private static boolean isLevelCoveredByScreen() {
250+
return minecraft.screen != null && ((DuckScreen) minecraft.screen).dynamic_fps$rendersBackground();
251+
}
252+
242253
private static void showNotification(String titleTranslationKey, String iconPath) {
243254
if (!DynamicFPSConfig.INSTANCE.batteryTracker().notifications()) {
244255
return;
@@ -281,7 +292,7 @@ public static void handleStateChange(PowerState previous, PowerState current) {
281292
}
282293

283294
// The FOCUSED config doesn't have the user's actual vsync preference sadly ...
284-
boolean enableVsync = current != PowerState.FOCUSED ? config.enableVsync() : minecraft.options.enableVsync().get();
295+
boolean enableVsync = current != PowerState.FOCUSED ? config.enableVsync() : minecraft.options.enableVsync;
285296

286297
if (enableVsync != before.enableVsync()) {
287298
minecraft.getWindow().updateVsync(enableVsync);

platforms/common/src/main/java/dynamic_fps/impl/compat/ClothConfig.java

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import net.minecraft.ChatFormatting;
2121
import net.minecraft.client.gui.screens.Screen;
2222
import net.minecraft.network.chat.Component;
23+
import net.minecraft.network.chat.TextComponent;
24+
import net.minecraft.network.chat.TranslatableComponent;
2325
import net.minecraft.sounds.SoundSource;
2426

2527
import java.util.Locale;

platforms/common/src/main/java/dynamic_fps/impl/config/option/IdleCondition.java

-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@
22

33
public enum IdleCondition {
44
NONE,
5-
VANILLA,
65
ON_BATTERY;
76
}

platforms/common/src/main/java/dynamic_fps/impl/feature/battery/BaseToast.java

+18-28
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package dynamic_fps.impl.feature.battery;
22

3+
import com.mojang.blaze3d.systems.RenderSystem;
4+
import com.mojang.blaze3d.vertex.PoseStack;
35
import dynamic_fps.impl.util.ResourceLocations;
46
import net.minecraft.client.Minecraft;
57
import net.minecraft.client.gui.Font;
6-
import net.minecraft.client.gui.GuiGraphics;
8+
import net.minecraft.client.gui.GuiComponent;
79
import net.minecraft.client.gui.components.toasts.Toast;
8-
import net.minecraft.client.gui.components.toasts.ToastManager;
10+
import net.minecraft.client.gui.components.toasts.ToastComponent;
911
import net.minecraft.client.renderer.RenderType;
1012
import net.minecraft.network.chat.Component;
1113
import net.minecraft.resources.ResourceLocation;
@@ -14,12 +16,13 @@
1416

1517
public class BaseToast implements Toast {
1618
private long firstRender;
17-
private Visibility visibility;
1819

1920
protected Component title;
2021
protected Component description;
2122
protected @Nullable ResourceLocation icon;
2223

24+
private static final Minecraft MINECRAFT = Minecraft.getInstance();
25+
2326
private static final ResourceLocation MOD_ICON = ResourceLocations.of("dynamic_fps", "textures/battery/toast/background_icon.png");
2427
private static final ResourceLocation BACKGROUND_IMAGE = ResourceLocations.of("dynamic_fps", "textures/battery/toast/background.png");
2528

@@ -28,47 +31,34 @@ protected BaseToast(Component title, Component description, @Nullable ResourceLo
2831
this.description = description;
2932

3033
this.icon = icon;
31-
32-
this.visibility = Visibility.SHOW;
3334
}
3435

3536
@Override
36-
public @NotNull Visibility getWantedVisibility() {
37-
return this.visibility;
38-
}
39-
40-
@Override
41-
public void update(ToastManager toastManager, long currentTime) {
42-
if (this.firstRender == 0) {
43-
return;
44-
}
45-
46-
if (currentTime - this.firstRender >= 5000.0 * toastManager.getNotificationDisplayTimeMultiplier()) {
47-
this.visibility = Visibility.HIDE;
48-
}
49-
}
50-
51-
@Override
52-
public void render(GuiGraphics graphics, Font font, long currentTime) {
37+
public @NotNull Visibility render(PoseStack poseStack, ToastComponent toastComponent, long currentTime) {
5338
if (this.firstRender == 0) {
5439
this.onFirstRender();
5540
this.firstRender = currentTime;
5641
}
5742

58-
// type, resource, x, y, ?, ?, width, height, width, height
59-
graphics.blit(RenderType::guiTextured, BACKGROUND_IMAGE, 0, 0, 0.0f, 0, this.width(), this.height(), this.width(), this.height());
43+
RenderSystem.setShaderTexture(0, BACKGROUND_IMAGE);
44+
// resource, x, y, z, ?, ?, width, height, width, height
45+
GuiComponent.blit(poseStack, 0, 0, 0.0f, 0.0f, this.width(), this.height(), this.width(), this.height());
6046

6147
int x = 8;
6248

6349
if (this.icon != null) {
6450
x += 22;
6551

66-
graphics.blit(RenderType::guiTextured, MOD_ICON, 2, 2, 0.0f, 0, 8, 8, 8, 8);
67-
graphics.blit(RenderType::guiTextured, this.icon, 8, 8, 0.0f, 0, 16, 16, 16, 16);
52+
RenderSystem.setShaderTexture(0, MOD_ICON);
53+
GuiComponent.blit(poseStack, 2, 2, 0, 0.0f, 0.0f, 8, 8, 8, 8);
54+
RenderSystem.setShaderTexture(0, this.icon);
55+
GuiComponent.blit(poseStack, 8, 8, 0, 0.0f, 0.0f, 16, 16, 16, 16);
6856
}
6957

70-
graphics.drawString(Minecraft.getInstance().font, this.title, x, 7, 0x5f3315, false);
71-
graphics.drawString(Minecraft.getInstance().font, this.description, x, 18, -16777216, false);
58+
MINECRAFT.font.draw(poseStack, this.title, x, 7, 0x5f3315);
59+
MINECRAFT.font.draw(poseStack, this.description, x, 18, -16777216);
60+
61+
return currentTime - this.firstRender >= 5000.0 ? Toast.Visibility.HIDE : Toast.Visibility.SHOW;
7262
}
7363

7464
public void onFirstRender() {}

platforms/common/src/main/java/dynamic_fps/impl/feature/battery/BatteryToast.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import dynamic_fps.impl.util.Components;
44
import net.minecraft.client.Minecraft;
55
import net.minecraft.network.chat.Component;
6+
import net.minecraft.network.chat.TextComponent;
67
import net.minecraft.resources.ResourceLocation;
78

89
public class BatteryToast extends BaseToast {
910
private static BatteryToast queuedToast;
1011

1112
private BatteryToast(Component title, ResourceLocation icon) {
12-
super(title, Component.empty(), icon);
13+
super(title, TextComponent.EMPTY, icon);
1314
}
1415

1516
/**
@@ -22,7 +23,7 @@ public static void queueToast(Component title, ResourceLocation icon) {
2223
queuedToast.icon = icon;
2324
} else {
2425
queuedToast = new BatteryToast(title, icon);
25-
Minecraft.getInstance().getToastManager().addToast(queuedToast);
26+
Minecraft.getInstance().getToasts().addToast(queuedToast);
2627
}
2728
}
2829

platforms/common/src/main/java/dynamic_fps/impl/feature/battery/BatteryTracker.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ private static void updateBatteries() {
143143
updateState();
144144

145145
try {
146-
Thread.sleep(updateInterval);
146+
Thread.sleep(updateInterval.toMillis());
147147
} catch (InterruptedException e) {
148148
active = false;
149149
Thread.currentThread().interrupt();

platforms/common/src/main/java/dynamic_fps/impl/feature/battery/ErrorToast.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ private ErrorToast(Component description) {
1616
*/
1717
public static void queueToast(Component description) {
1818
ErrorToast toast = new ErrorToast(description);
19-
Minecraft.getInstance().getToastManager().addToast(toast);
19+
Minecraft.getInstance().getToasts().addToast(toast);
2020
}
2121
}

platforms/common/src/main/java/dynamic_fps/impl/feature/state/OptionHolder.java

+22-21
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package dynamic_fps.impl.feature.state;
22

33
import dynamic_fps.impl.config.option.GraphicsState;
4+
import net.minecraft.client.AmbientOcclusionStatus;
45
import net.minecraft.client.CloudStatus;
56
import net.minecraft.client.GraphicsStatus;
67
import net.minecraft.client.Options;
7-
import net.minecraft.server.level.ParticleStatus;
8+
import net.minecraft.client.ParticleStatus;
89

910
/*
1011
* Helper for saving, overriding, and re-applying vanilla options.
@@ -14,45 +15,45 @@
1415
public class OptionHolder {
1516
private static CloudStatus cloudStatus;
1617
private static GraphicsStatus graphicsStatus;
17-
private static boolean ambientOcclusion;
18+
private static AmbientOcclusionStatus ambientOcclusion;
1819
private static ParticleStatus particlesStatus;
1920
private static boolean entityShadows;
20-
private static double entityDistance;
21+
private static float entityDistance;
2122

2223
/*
2324
* Create an in-memory copy of current vanilla graphics options.
2425
*
2526
* This MUST be called while graphics options have not been changed yet.
2627
*/
2728
public static void copyOptions(Options options) {
28-
cloudStatus = options.getCloudsType();
29-
graphicsStatus = options.graphicsMode().get();
30-
ambientOcclusion = options.ambientOcclusion().get();
31-
particlesStatus = options.particles().get();
32-
entityShadows = options.entityShadows().get();
33-
entityDistance = options.entityDistanceScaling().get();
29+
cloudStatus = options.renderClouds;
30+
graphicsStatus = options.graphicsMode;
31+
ambientOcclusion = options.ambientOcclusion;
32+
particlesStatus = options.particles;
33+
entityShadows = options.entityShadows;
34+
entityDistance = options.entityDistanceScaling;
3435
}
3536

3637
/*
3738
* Apply or revert the graphics options for the specified graphics state.
3839
*/
3940
public static void applyOptions(Options options, GraphicsState state) {
4041
if (state == GraphicsState.DEFAULT) {
41-
options.cloudStatus().set(cloudStatus);
42-
options.graphicsMode().set(graphicsStatus);
43-
options.ambientOcclusion().set(ambientOcclusion);
44-
options.particles().set(particlesStatus);
45-
options.entityShadows().set(entityShadows);
46-
options.entityDistanceScaling().set(entityDistance);
42+
options.renderClouds = cloudStatus;
43+
options.graphicsMode = graphicsStatus;
44+
options.ambientOcclusion = ambientOcclusion;
45+
options.particles = particlesStatus;
46+
options.entityShadows = entityShadows;
47+
options.entityDistanceScaling = entityDistance;
4748
} else { // state == GraphicsState.REDUCED
48-
options.cloudStatus().set(CloudStatus.OFF);
49-
options.particles().set(ParticleStatus.MINIMAL);
50-
options.entityShadows().set(false);
51-
options.entityDistanceScaling().set(0.5);
49+
options.renderClouds = CloudStatus.OFF;
50+
options.particles = ParticleStatus.MINIMAL;
51+
options.entityShadows = false;
52+
options.entityDistanceScaling = 0.5f;
5253

5354
if (state == GraphicsState.MINIMAL) {
54-
options.graphicsMode().set(GraphicsStatus.FAST);
55-
options.ambientOcclusion().set(false);
55+
options.graphicsMode = GraphicsStatus.FAST;
56+
options.ambientOcclusion = AmbientOcclusionStatus.OFF;
5657
}
5758
}
5859
}

0 commit comments

Comments
 (0)