Skip to content

Commit

Permalink
Merge pull request #47 from dima-dencep/1.20.x/dev
Browse files Browse the repository at this point in the history
3.2.0
  • Loading branch information
dima-dencep committed Sep 2, 2023
2 parents 27b190a + 9422d75 commit c828533
Show file tree
Hide file tree
Showing 24 changed files with 840 additions and 285 deletions.
661 changes: 661 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

180 changes: 0 additions & 180 deletions License.md

This file was deleted.

5 changes: 0 additions & 5 deletions README.md

This file was deleted.

15 changes: 11 additions & 4 deletions build.gradle
@@ -1,7 +1,8 @@
plugins {
id "com.github.johnrengelman.shadow" version "8.1.1" apply false
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.2-SNAPSHOT" apply false
id "dev.architectury.loom" version "1.3-SNAPSHOT" apply false
id "io.github.p03w.machete" version "2.+" apply false
}

architectury {
Expand All @@ -10,6 +11,7 @@ architectury {

subprojects {
apply plugin: "dev.architectury.loom"
apply plugin: "io.github.p03w.machete"

loom {
silentMojangMappingsLicense()
Expand All @@ -19,6 +21,11 @@ subprojects {
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
}

machete {
ignoredTasks.add("shadowJar")
ignoredTasks.add("jar")
}
}

allprojects {
Expand All @@ -27,17 +34,17 @@ allprojects {
apply plugin: "maven-publish"

archivesBaseName = rootProject.archives_base_name
version = "${rootProject.minecraft_version}-${rootProject.mod_version}"
version = "${rootProject.mod_version}-${rootProject.minecraft_version}"
group = rootProject.maven_group

repositories {
maven { url "https://maven.shedaniel.me/" }
maven { url "https://maven.terraformersmc.com/releases/" }
}

tasks.withType(JavaCompile) {
tasks.withType(JavaCompile).configureEach {
options.encoding = "UTF-8"
options.release = 17
options.release.set(17)
}

java {
Expand Down
14 changes: 8 additions & 6 deletions common/src/main/java/com/github/dimadencep/mods/rrls/Rrls.java
Expand Up @@ -10,20 +10,22 @@
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;

public class Rrls {
public static final StackWalker classWalker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
public static final ModConfig config = AutoConfig.register(ModConfig.class, Toml4jConfigSerializer::new).get();
public static final Logger logger = LogManager.getLogger("RRLS");

protected final MinecraftClient client = MinecraftClient.getInstance();
public static final ModConfig MOD_CONFIG = AutoConfig.register(ModConfig.class, Toml4jConfigSerializer::new).get();
public static final Logger LOGGER = LogManager.getLogger("rrls");

@Nullable
public static Overlay tryGetOverlay(Overlay original) {
if (original instanceof SplashAccessor accessor && accessor.isAttached()) {
if (original instanceof SplashAccessor accessor && accessor.rrls$isAttached()) {
return null;
}

return original;
}

public static Optional<SplashAccessor> getAccessor() {
return Optional.ofNullable(MinecraftClient.getInstance().overlay instanceof SplashAccessor accessor && accessor.rrls$isAttached() ? accessor : null);
}
}
Expand Up @@ -3,9 +3,15 @@
import net.minecraft.client.gui.DrawContext;

public interface SplashAccessor {
boolean isAttached();

void render(DrawContext context, boolean isGame);
@Deprecated(forRemoval = true, since = "2.2.0")
default boolean isAttached() {
return rrls$isAttached();
}

void reload();
boolean rrls$isAttached();

void rrls$render(DrawContext context, boolean isGame);

void rrls$reload();
}
Expand Up @@ -7,13 +7,23 @@
@Config(name = "rrls")
public class ModConfig implements ConfigData {
public boolean enabled = true;

@ConfigEntry.Gui.Tooltip
public boolean rgbProgress = false;

@ConfigEntry.Gui.Tooltip
public boolean loadingScreenHide = false;

@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
public ShowIn showIn = ShowIn.ALL;

@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
public Type type = Type.PROGRESS;

public String reloadText = "";

public boolean resetResources = false;

@ConfigEntry.Gui.Tooltip
public boolean reInitScreen = true;

Expand All @@ -35,4 +45,9 @@ public boolean canShow(boolean isGame) {
}
}
}

public enum Type {
PROGRESS,
TEXT
}
}
@@ -1,7 +1,6 @@
package com.github.dimadencep.mods.rrls.mixins;

import com.github.dimadencep.mods.rrls.Rrls;
import com.github.dimadencep.mods.rrls.accessor.SplashAccessor;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Overlay;
import net.minecraft.text.Text;
Expand All @@ -12,7 +11,6 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import java.util.concurrent.CompletableFuture;

Expand All @@ -32,8 +30,8 @@ public abstract class MinecraftClientMixin {
cancellable = true
)
public void onResourceReloadFailure(Throwable exception, Text resourceName, CallbackInfo ci) {
if (!Rrls.config.resetResources) {
Rrls.logger.error("Caught error loading resourcepacks!", exception);
if (!Rrls.MOD_CONFIG.resetResources) {
Rrls.LOGGER.error("Caught error loading resourcepacks!", exception);

this.reloadResources(true).thenRun(() -> this.showResourceReloadFailureToast(resourceName));

Expand All @@ -54,18 +52,4 @@ public void onResourceReloadFailure(Throwable exception, Text resourceName, Call
public Overlay fixOverlayUsage(MinecraftClient instance) {
return Rrls.tryGetOverlay(instance.overlay);
}

@Inject(
method = "getOverlay",
at = @At(
value = "HEAD"
)
)
public void getOverlay(CallbackInfoReturnable<Overlay> cir) { // TODO rewrite
if (cir.getReturnValue() instanceof SplashAccessor accessor && accessor.isAttached()) {
Class<?> callerClass = Rrls.classWalker.getCallerClass();

Rrls.logger.warn("Illegal getOverlay access: {}", callerClass.getName());
}
}
}
Expand Up @@ -13,6 +13,7 @@
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
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.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
Expand All @@ -25,7 +26,8 @@

@Mixin(SplashOverlay.class)
public abstract class SplashOverlayMixin extends Overlay implements SplashAccessor {
public boolean rrls_attach;
@Unique
public boolean rrls$attach;
@Shadow
@Final
private ResourceReload reload;
Expand Down Expand Up @@ -55,41 +57,51 @@ public abstract class SplashOverlayMixin extends Overlay implements SplashAccess
)
)
private void init(MinecraftClient client, ResourceReload monitor, Consumer<Optional<Throwable>> exceptionHandler, boolean reloading, CallbackInfo ci) {
this.rrls_attach = (reloading && Rrls.config.enabled) || (!reloading && Rrls.config.loadingScreenHide);
this.rrls$attach = (reloading && Rrls.MOD_CONFIG.enabled) || (!reloading && Rrls.MOD_CONFIG.loadingScreenHide);
}

@Override
public boolean isAttached() {
return this.rrls_attach;
public boolean rrls$isAttached() {
return this.rrls$attach;
}


@Inject(
method = "pausesGame",
at = @At(
value = "TAIL"
value = "HEAD"
),
cancellable = true
)
public void pauses(CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(!this.rrls_attach);
if (this.rrls$attach)
cir.setReturnValue(false);
}

@Override
public void render(DrawContext context, boolean isGame) {
if (!Rrls.config.showIn.canShow(isGame)) return;
public void rrls$render(DrawContext context, boolean isGame) {
if (!Rrls.MOD_CONFIG.showIn.canShow(isGame)) return;

int i = context.getScaledWindowWidth();
int j = context.getScaledWindowHeight();

int s = (int) ((double) j * 0.8325);
int r = (int) (Math.min(i * 0.75, j) * 0.5);
switch (Rrls.MOD_CONFIG.type) {
case PROGRESS -> {
int s = (int) ((double) j * 0.8325);
int r = (int) (Math.min(i * 0.75, j) * 0.5);

this.renderProgressBar(context, i / 2 - r, s - 5, i / 2 + r, s + 5, 0.8F);
this.renderProgressBar(context, i / 2 - r, s - 5, i / 2 + r, s + 5, 0.8F);
}

case TEXT -> context.drawCenteredTextWithShadow(
client.textRenderer, Rrls.MOD_CONFIG.reloadText, i / 2, 70,
Rrls.MOD_CONFIG.rgbProgress ? ThreadLocalRandom.current().nextInt(0, 0xFFFFFF) : -1
);
}
}

@Override
public void reload() {
public void rrls$reload() {
long l = Util.getMeasuringTimeMs();
if (this.reloading && this.reloadStartTime == -1L) {
this.reloadStartTime = l;
Expand All @@ -113,7 +125,7 @@ public void reload() {

this.reloadCompleteTime = Util.getMeasuringTimeMs();

if (Rrls.config.reInitScreen && this.client.currentScreen != null) {
if (Rrls.MOD_CONFIG.reInitScreen && this.client.currentScreen != null) {
this.client.currentScreen.init(this.client, this.client.getWindow().getScaledWidth(), this.client.getWindow().getScaledHeight());
}
}
Expand All @@ -127,7 +139,7 @@ public void reload() {
cancellable = true
)
public void render(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (this.rrls_attach)
if (this.rrls$attach)
ci.cancel();
}

Expand All @@ -139,7 +151,7 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta, Cal
)
)
public int rainbowProgress(int alpha, int red, int green, int blue) {
if (Rrls.config.rgbProgress && this.rrls_attach) {
if (Rrls.MOD_CONFIG.rgbProgress && this.rrls$attach) {
int baseColor = ThreadLocalRandom.current().nextInt(0, 0xFFFFFF);

return ColorHelper.Argb.getArgb(alpha, ColorHelper.Argb.getRed(baseColor), ColorHelper.Argb.getGreen(baseColor), ColorHelper.Argb.getBlue(baseColor));
Expand Down
12 changes: 12 additions & 0 deletions common/src/main/resources/assets/rrls/lang/be_by.json
@@ -0,0 +1,12 @@
{
"text.autoconfig.rrls.title": "Remove Reloading Screen",
"text.autoconfig.rrls.option.enabled": "Схаваць экраны перазагрузкі",
"text.autoconfig.rrls.option.rgbProgress": "Каляровы радок прагрэсу",
"text.autoconfig.rrls.option.rgbProgress.@Tooltip": "§cМОЖА ВЫКЛІКАЦЬ ЭПІЛЕПСІЮ",
"text.autoconfig.rrls.option.loadingScreenHide": "Схаваць экраны загрузкі",
"text.autoconfig.rrls.option.loadingScreenHide.@Tooltip": "МОГУЦЬ УЗНІКНУЦЬ ПРАБЛЕМЫ",
"text.autoconfig.rrls.option.showIn": "Адлюстраванне прагрэссу перазагрузкі пакетаў рэсурсаў",
"text.autoconfig.rrls.option.resetResources": "Скідваць пакеты рэсурсаў, калі не атрымалася загрузіць",
"text.autoconfig.rrls.option.reInitScreen": "Рэініцыялізацыя бягучага экрана пасля перазагрузкі",
"text.autoconfig.rrls.option.reInitScreen.@Tooltip": "Адключэнне гэтай функцыі можа выклікаць праблемы пасля сканчэння перазагрузкі"
}
2 changes: 2 additions & 0 deletions common/src/main/resources/assets/rrls/lang/en_us.json
Expand Up @@ -6,6 +6,8 @@
"text.autoconfig.rrls.option.loadingScreenHide": "Hide loading screen",
"text.autoconfig.rrls.option.loadingScreenHide.@Tooltip": "MAY CAUSE PROBLEMS",
"text.autoconfig.rrls.option.showIn": "Resource reloading process display",
"text.autoconfig.rrls.option.type": "What will be displayed on reloading",
"text.autoconfig.rrls.option.reloadText": "The text that will be displayed if TEXT is selected above",
"text.autoconfig.rrls.option.resetResources": "Reset resources when failed load",
"text.autoconfig.rrls.option.reInitScreen": "Reinitializing the current screen after a reload",
"text.autoconfig.rrls.option.reInitScreen.@Tooltip": "Disabling this feature may eliminate the hang-up after the reload is complete"
Expand Down
16 changes: 16 additions & 0 deletions common/src/main/resources/assets/rrls/lang/pt_br.json
@@ -0,0 +1,16 @@
{
"text.autoconfig.rrls.title": "Remover tela de recarga",
"rrls.reloadresources": "Recarregando recursos...",
"rrls.alreadyReloading": "O recarregamento já começou!",
"text.autoconfig.rrls.option.enabled": "Ocultar tela de recarga",
"text.autoconfig.rrls.option.rgbText": "Texto colorido ao recarregar",
"text.autoconfig.rrls.option.rgbText.@Tooltip": "PODE CAUSAR EPILEPSIA",
"text.autoconfig.rrls.option.loadingScreenHide": "Ocultar tela de carregamento",
"text.autoconfig.rrls.option.loadingScreenHide.@Tooltip": "PODE CAUSAR PROBLEMAS",
"text.autoconfig.rrls.option.showIn": "Exibição do processo de recarga de recursos",
"text.autoconfig.rrls.option.resetResources": "Redefinir recursos quando falha no carregamento",
"text.autoconfig.rrls.option.reInitScreen": "Reiniciando a tela atual após uma recarga",
"text.autoconfig.rrls.option.reInitScreen.@Tooltip": "Desativar esse recurso pode eliminar o desligamento após a conclusão do recarregamento",
"text.autoconfig.rrls.option.reloadText": "Recarregar texto",
"text.autoconfig.rrls.option.reloadText.@Tooltip": "Suporta localização"
}
2 changes: 2 additions & 0 deletions common/src/main/resources/assets/rrls/lang/ru_ru.json
Expand Up @@ -6,6 +6,8 @@
"text.autoconfig.rrls.option.loadingScreenHide": "Прятать загрузочный экран",
"text.autoconfig.rrls.option.loadingScreenHide.@Tooltip": "МОЖЕТ ВЫЗВАТЬ ПРОБЛЕМЫ",
"text.autoconfig.rrls.option.showIn": "Отображение процесса перезагрузки ресурсов",
"text.autoconfig.rrls.option.type": "Что будет отображаться при перезагрузке",
"text.autoconfig.rrls.option.reloadText": "Текст, который будет отображаться, если выше выбран пункт TEXT",
"text.autoconfig.rrls.option.resetResources": "Сброс ресурсов при неудачной загрузке",
"text.autoconfig.rrls.option.reInitScreen": "Повторная инициализация текущего экрана после перезагрузки",
"text.autoconfig.rrls.option.reInitScreen.@Tooltip": "Отключение этой функции может устранить зависание после завершения перезагрузки"
Expand Down
@@ -1,7 +1,6 @@
package com.github.dimadencep.mods.rrls.fabric;

import com.github.dimadencep.mods.rrls.Rrls;
import com.github.dimadencep.mods.rrls.accessor.SplashAccessor;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
Expand All @@ -10,14 +9,14 @@ public class RrlsFabric extends Rrls implements ClientModInitializer {

@Override
public void onInitializeClient() {
ScreenEvents.AFTER_INIT.register((client1, screen, scaledWidth, scaledHeight) -> ScreenEvents.afterRender(screen).register((screen1, drawContext, mouseX, mouseY, tickDelta) -> {
if (this.client.overlay instanceof SplashAccessor accessor && accessor.isAttached())
accessor.render(drawContext, false);
}));
ScreenEvents.AFTER_INIT.register((client1, screen, scaledWidth, scaledHeight) ->
ScreenEvents.afterRender(screen).register((screen1, drawContext, mouseX, mouseY, tickDelta) ->
getAccessor().ifPresent(splashAccessor -> splashAccessor.rrls$render(drawContext, false))
)
);

HudRenderCallback.EVENT.register((drawContext, tickDelta) -> {
if (this.client.overlay instanceof SplashAccessor accessor && accessor.isAttached())
accessor.render(drawContext, true);
});
HudRenderCallback.EVENT.register((drawContext, tickDelta) ->
getAccessor().ifPresent(splashAccessor -> splashAccessor.rrls$render(drawContext, true))
);
}
}

0 comments on commit c828533

Please sign in to comment.