Skip to content

Commit 45819c7

Browse files
committed
13.5
1 parent 26f35eb commit 45819c7

File tree

9 files changed

+107
-5
lines changed

9 files changed

+107
-5
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//file:noinspection GroovyUnusedAssignment
22
//file:noinspection GroovyAssignabilityCheck
33
plugins {
4-
id 'fabric-loom' version '1.1-SNAPSHOT'
4+
id 'fabric-loom' version '1.2-SNAPSHOT'
55
id 'maven-publish'
66
}
77

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ yarn_mappings=1.16.1+build.21
1010
loader_version=0.14.17
1111

1212
# Mod Properties
13-
mod_version = 13.4.1
13+
mod_version = 13.5
1414
maven_group = com.redlimerl.speedrunigt
1515
archives_base_name = SpeedRunIGT

gradle/wrapper/gradle-wrapper.jar

2.48 KB
Binary file not shown.
+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
4+
networkTimeout=10000
45
zipStoreBase=GRADLE_USER_HOME
56
zipStorePath=wrapper/dists

src/main/java/com/redlimerl/speedrunigt/impl/OptionButtonsImpl.java

+24
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,30 @@ public Collection<OptionButtonFactory> createOptionButtons() {
259259
.setCategory("speedrunigt.option.category.timer")
260260
);
261261

262+
factories.add(screen -> new OptionButtonFactory.Builder()
263+
.setButtonWidget(
264+
new ButtonWidget(0, 0, 150, 20, new TranslatableText("speedrunigt.option.practice_detect").append(" : ").append(SpeedRunOption.getOption(SpeedRunOptions.ENABLE_PRACTICE_DETECT) ? ScreenTexts.ON : ScreenTexts.OFF),
265+
(ButtonWidget button) -> {
266+
SpeedRunOption.setOption(SpeedRunOptions.ENABLE_PRACTICE_DETECT, !SpeedRunOption.getOption(SpeedRunOptions.ENABLE_PRACTICE_DETECT));
267+
button.setMessage(new TranslatableText("speedrunigt.option.practice_detect").append(" : ").append(SpeedRunOption.getOption(SpeedRunOptions.ENABLE_PRACTICE_DETECT) ? ScreenTexts.ON : ScreenTexts.OFF));
268+
})
269+
)
270+
.setToolTip(() -> I18n.translate("speedrunigt.option.practice_detect.description"))
271+
.setCategory("speedrunigt.option.category.practice")
272+
);
273+
274+
factories.add(screen -> new OptionButtonFactory.Builder()
275+
.setButtonWidget(
276+
new ButtonWidget(0, 0, 150, 20, new TranslatableText("speedrunigt.option.teleport_to_practice").append(" : ").append(SpeedRunOption.getOption(SpeedRunOptions.TELEPORT_TO_END_PRACTICE) ? ScreenTexts.ON : ScreenTexts.OFF),
277+
(ButtonWidget button) -> {
278+
SpeedRunOption.setOption(SpeedRunOptions.TELEPORT_TO_END_PRACTICE, !SpeedRunOption.getOption(SpeedRunOptions.TELEPORT_TO_END_PRACTICE));
279+
button.setMessage(new TranslatableText("speedrunigt.option.teleport_to_practice").append(" : ").append(SpeedRunOption.getOption(SpeedRunOptions.TELEPORT_TO_END_PRACTICE) ? ScreenTexts.ON : ScreenTexts.OFF));
280+
})
281+
)
282+
.setToolTip(() -> I18n.translate("speedrunigt.option.teleport_to_practice.description"))
283+
.setCategory("speedrunigt.option.category.practice")
284+
);
285+
262286
ButtonWidget alwaysAutoRetimeButton = new ButtonWidget(0, 0, 150, 20, new TranslatableText("speedrunigt.option.always_use_auto_retime").append(" : ").append(SpeedRunOption.getOption(SpeedRunOptions.ALWAYS_USE_AUTO_RETIME) ? ScreenTexts.ON : ScreenTexts.OFF),
263287
(ButtonWidget button) -> {
264288
SpeedRunOption.setOption(SpeedRunOptions.ALWAYS_USE_AUTO_RETIME, !SpeedRunOption.getOption(SpeedRunOptions.ALWAYS_USE_AUTO_RETIME));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.redlimerl.speedrunigt.mixins;
2+
3+
import com.redlimerl.speedrunigt.option.SpeedRunOption;
4+
import com.redlimerl.speedrunigt.option.SpeedRunOptions;
5+
import com.redlimerl.speedrunigt.timer.InGameTimer;
6+
import com.redlimerl.speedrunigt.timer.PracticeTimerManager;
7+
import net.minecraft.client.gui.hud.InGameHud;
8+
import net.minecraft.text.Text;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
import org.spongepowered.asm.mixin.injection.Inject;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
13+
14+
import java.util.regex.Matcher;
15+
import java.util.regex.Pattern;
16+
17+
@Mixin(InGameHud.class)
18+
public class InGameHudMixin {
19+
20+
@Inject(method = "setOverlayMessage", at = @At("HEAD"))
21+
public void onTitleMixin(Text message, boolean tinted, CallbackInfo ci) {
22+
if (!SpeedRunOption.getOption(SpeedRunOptions.ENABLE_PRACTICE_DETECT))
23+
return;
24+
if ((InGameTimer.getInstance().isStarted() && !InGameTimer.getInstance().isCompleted()) && InGameTimer.getInstance().getCategory() == PracticeTimerManager.PRACTICE_CATEGORY)
25+
return;
26+
27+
String string = message.getString();
28+
Float time = null;
29+
30+
if (string.contains(":")) {
31+
Matcher matcher = Pattern.compile("(\\d+):\\d+(:\\d+)?").matcher(string);
32+
if (matcher.find()) {
33+
PracticeTimerManager.startPractice(0);
34+
return;
35+
}
36+
} else {
37+
try {
38+
time = Float.parseFloat(string);
39+
} catch (NumberFormatException ignored) {
40+
}
41+
}
42+
43+
if (time != null) {
44+
PracticeTimerManager.startPractice(time);
45+
}
46+
}
47+
}

src/main/java/com/redlimerl/speedrunigt/mixins/network/ClientPlayNetworkHandlerMixin.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import net.minecraft.client.network.ClientPlayNetworkHandler;
1111
import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
1212
import net.minecraft.network.packet.s2c.play.PlaySoundIdS2CPacket;
13-
import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket;
1413
import org.spongepowered.asm.mixin.Mixin;
1514
import org.spongepowered.asm.mixin.Shadow;
1615
import org.spongepowered.asm.mixin.injection.At;
@@ -44,6 +43,12 @@ public void onCustom(CustomPayloadS2CPacket packet, CallbackInfo ci) {
4443
}
4544
}
4645

46+
@Inject(method = "onPlayerPositionLook", at = @At("RETURN"))
47+
public void onPlayerPositionLookMixin(CallbackInfo ci) {
48+
if (SpeedRunOption.getOption(SpeedRunOptions.TELEPORT_TO_END_PRACTICE))
49+
PracticeTimerManager.stopPractice();
50+
}
51+
4752
@Inject(method = "onPlaySoundId", at = @At("RETURN"))
4853
public void onPlaySoundIdMixin(PlaySoundIdS2CPacket packet, CallbackInfo ci) {
4954
String packetId = packet.getSoundId().toString();

src/main/java/com/redlimerl/speedrunigt/option/SpeedRunOptions.java

+24
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,30 @@ public String valueToString(Boolean value) {
260260
}
261261
};
262262

263+
public static final OptionArgument<Boolean> ENABLE_PRACTICE_DETECT = new OptionArgument<Boolean>(new Identifier(SpeedRunIGT.MOD_ID, "practice_detect"), true) {
264+
@Override
265+
public Boolean valueFromString(String string) {
266+
return Objects.equals(string, "true");
267+
}
268+
269+
@Override
270+
public String valueToString(Boolean value) {
271+
return String.valueOf(value);
272+
}
273+
};
274+
275+
public static final OptionArgument<Boolean> TELEPORT_TO_END_PRACTICE = new OptionArgument<Boolean>(new Identifier(SpeedRunIGT.MOD_ID, "teleport_to_practice"), true) {
276+
@Override
277+
public Boolean valueFromString(String string) {
278+
return Objects.equals(string, "true");
279+
}
280+
281+
@Override
282+
public String valueToString(Boolean value) {
283+
return String.valueOf(value);
284+
}
285+
};
286+
263287
public static final OptionArgument<Boolean> AUTO_SAVE_PLAYER_DATA = new OptionArgument<Boolean>(new Identifier(SpeedRunIGT.MOD_ID, "auto_save_player_data"), true) {
264288
@Override
265289
public Boolean valueFromString(String string) {

src/main/resources/speedrunigt.mixins.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"ClientAdvancementManagerMixin",
2020
"ClientPlayerEntityMixin",
2121
"ClientWorldMixin",
22+
"InGameHudMixin",
2223
"KeyBindingMixin",
2324
"MinecraftClientMixin",
2425
"MouseMixin",
@@ -31,9 +32,9 @@
3132
"keybinding.KeyBindingAccessor",
3233
"network.ClientPlayNetworkHandlerMixin",
3334
"retime.OptionButtonWidgetMixin",
34-
"retime.SodiumOptionImplMixin",
3535
"retime.OptionScreenMixin",
3636
"retime.OptionSliderWidgetMixin",
37+
"retime.SodiumOptionImplMixin",
3738
"retime.accessor.DoubleOptionSliderWidgetAccessor",
3839
"screen.CreditsScreenMixin",
3940
"screen.DownloadingTerrainScreenMixin",

0 commit comments

Comments
 (0)