Skip to content

Commit 35c4dc8

Browse files
committed
4.0.0
1 parent fdf2844 commit 35c4dc8

8 files changed

+31
-15
lines changed

build.gradle

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ dependencies {
1818
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
1919

2020
implementation include("com.github.KrLite:Pierced:${project.pierced_version}")
21-
implementation include("com.github.KrLite:Equator-Utils:${project.equator_utils_version}")
2221
}
2322

2423
processResources {

gradle.properties

-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,3 @@ archives_base_name = splasher
1313
# Dependencies
1414
fabric_version = 0.76.0+1.19.4
1515
pierced_version = v1.2
16-
equator_utils_version = v1.0.5

src/main/java/net/krlite/splasher/Splasher.java

+14-7
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
55
import net.fabricmc.fabric.api.client.screen.v1.ScreenMouseEvents;
66
import net.fabricmc.loader.api.FabricLoader;
7-
import net.krlite.equator.util.Pusher;
87
import net.minecraft.client.MinecraftClient;
98
import net.minecraft.client.gui.screen.TitleScreen;
109
import net.minecraft.client.sound.PositionedSoundInstance;
11-
import net.minecraft.client.sound.SoundInstance;
12-
import net.minecraft.sound.SoundEvent;
1310
import net.minecraft.sound.SoundEvents;
1411
import net.minecraft.text.MutableText;
1512
import net.minecraft.text.Text;
@@ -19,12 +16,13 @@
1916

2017
import java.util.ArrayList;
2118
import java.util.Objects;
19+
import java.util.concurrent.atomic.AtomicBoolean;
2220

2321
public class Splasher implements ModInitializer {
2422
public static final String MOD_ID = "splasher";
2523
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
2624
public static final SplasherConfig CONFIG = new SplasherConfig(FabricLoader.getInstance().getConfigDir().resolve(MOD_ID + ".toml").toFile());
27-
public static final Pusher PUSHER = new Pusher(CONFIG.randomRate == SplasherConfig.RandomRate.JEB);
25+
private static final AtomicBoolean shouldSplash = new AtomicBoolean(CONFIG.randomRate == SplasherConfig.RandomRate.JEB);
2826

2927
public record Node(double x, double y) {
3028
public double getCross(Node p1, Node p2) {
@@ -57,6 +55,14 @@ public Rect rotate(Node origin, double clockwiseDegree) {
5755
}
5856
}
5957

58+
public static void push() {
59+
shouldSplash.set(true);
60+
}
61+
62+
public static boolean shouldSplash() {
63+
return shouldSplash.getAndSet(false);
64+
}
65+
6066
// Splash text data
6167
private static final ArrayList<Formatting> FORMATTINGS = new ArrayList<>();
6268
private static int color = 0xFFFF00;
@@ -71,8 +77,9 @@ public void onInitialize() {
7177
if (screen instanceof TitleScreen) {
7278
ScreenMouseEvents.beforeMouseClick(screen)
7379
.register((currentScreen, mouseX, mouseY, button) -> {
74-
if (isMouseOverSplashText(new Node(scaledWidth / 2.0 + 90, 70 - 6), new Node(mouseX, mouseY)) && CONFIG.randomRate.onClick()) {
75-
PUSHER.push(Splasher::playClickingSound);
80+
if (isMouseOverSplashText(new Node(scaledWidth / 2.0 + (CONFIG.lefty ? -90 : 90), 70 - 6), new Node(mouseX, mouseY)) && CONFIG.randomRate.onClick()) {
81+
push();
82+
playClickingSound();
7683
}
7784
});
7885
}
@@ -88,7 +95,7 @@ public static boolean isMouseOverSplashText(Node origin, Node mouse) {
8895
return new Rect(
8996
origin.append(new Node(-width / 2, -height / 2)),
9097
origin.append(new Node(width / 2, height / 2))
91-
).rotate(origin, -20).contains(mouse);
98+
).rotate(origin, CONFIG.lefty ? 20 : -20).contains(mouse);
9299
}
93100

94101
public static void updateSize(float width, float height) {

src/main/java/net/krlite/splasher/SplasherConfig.java

+3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ public SplasherConfig(File file) {
2727
public boolean colorful = false;
2828

2929
@Table("splash")
30+
@Comment("Moves splash texts to the left")
31+
public boolean lefty = false;
3032

33+
@Table("splash")
3134
@Comment("Controls the splash text random rate")
3235
@Comment
3336
@Comment("Never - Never reload splash texts")

src/main/java/net/krlite/splasher/mixin/ResourceReloader.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
public class ResourceReloader {
1414
@Inject(method = "reloadResources()Ljava/util/concurrent/CompletableFuture;", at = @At("TAIL"))
1515
public void reload(CallbackInfoReturnable<CompletableFuture<Void>> cir) {
16-
Splasher.PUSHER.push();
16+
Splasher.push();
1717
}
1818
}

src/main/java/net/krlite/splasher/mixin/SplashTextColorer.java

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package net.krlite.splasher.mixin;
22

33
import net.krlite.splasher.Splasher;
4-
import net.krlite.splasher.SplasherConfig;
54
import net.minecraft.client.font.TextRenderer;
65
import net.minecraft.client.gui.DrawableHelper;
76
import net.minecraft.client.gui.screen.TitleScreen;

src/main/java/net/krlite/splasher/mixin/SplashTextResourceSupplierReplacer.java

-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import net.minecraft.client.MinecraftClient;
77
import net.minecraft.client.resource.SplashTextResourceSupplier;
88
import net.minecraft.client.util.Session;
9-
import org.jetbrains.annotations.Nullable;
109
import org.spongepowered.asm.mixin.Final;
1110
import org.spongepowered.asm.mixin.Mixin;
1211
import org.spongepowered.asm.mixin.Mutable;
@@ -16,7 +15,6 @@
1615
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1716

1817
import java.util.List;
19-
import java.util.Objects;
2018

2119
import static net.krlite.splasher.Splasher.CONFIG;
2220

src/main/java/net/krlite/splasher/mixin/TitleScreenWidget.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class MinecraftClientTrigger {
2020
@Inject(method = "setScreen", at = @At("TAIL"))
2121
private void trigger(Screen screen, CallbackInfo ci) {
2222
if (screen instanceof TitleScreen) {
23-
if ((Splasher.CONFIG.randomRate.onReload() && Splasher.initialized)) Splasher.PUSHER.push();
23+
if ((Splasher.CONFIG.randomRate.onReload() && Splasher.initialized)) Splasher.push();
2424
else if (!Splasher.initialized) Splasher.initialized = true;
2525
}
2626
}
@@ -36,7 +36,18 @@ protected TitleScreenWidget(Text title) {
3636

3737
@Inject(method = "render", at = @At("HEAD"))
3838
private void render(MatrixStack matrixStack, int mouseX, int mouseY, float delta, CallbackInfo ci) {
39-
Splasher.PUSHER.pull(() -> splashText = MinecraftClient.getInstance().getSplashTextLoader().get());
39+
if (Splasher.shouldSplash())
40+
splashText = MinecraftClient.getInstance().getSplashTextLoader().get();
41+
}
42+
43+
@ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;translate(FFF)V"), index = 0)
44+
private float translateX(float x) {
45+
return Splasher.CONFIG.lefty ? MinecraftClient.getInstance().getWindow().getScaledWidth() - x : x;
46+
}
47+
48+
@ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/RotationAxis;rotationDegrees(F)Lorg/joml/Quaternionf;"))
49+
private float rotate(float angle) {
50+
return Splasher.CONFIG.lefty ? -angle : angle;
4051
}
4152

4253
@ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;scale(FFF)V"), index = 0)

0 commit comments

Comments
 (0)