Compare commits

...

5 Commits

Author SHA1 Message Date
680d49d4b5 update yarn mappings 2021-01-28 16:58:43 +01:00
bd765b6faf green wolf message 2021-01-28 15:28:24 +01:00
413155d7d5 removed old infos from the README 2021-01-27 23:11:56 +01:00
4e2ead95f4 fixed disconnect screen message 2021-01-27 23:09:23 +01:00
a7b9190645 cancel sending signal if user closes the menu 2021-01-27 22:54:33 +01:00
7 changed files with 69 additions and 64 deletions

View File

@ -1,21 +1,4 @@
# AutoReconnect [1.16+][Fabric]
This mod will automatically try to reconnect you back to a server if you got disconnected.
By default, it will make 4 attempts after 3, 10, 30 and 60 seconds.
### Features
* Multiple individually delayed reconnect attempts
* Displays a countdown on the disconnect screen
* Allows you to exit the disconnect screen quickly by pressing the escape key
* Customizable
* Amount of attempts
* Delay between each attempt
* Client side commands
* `/autoreconnect reload` Reloads the config and displays the settings in chat
* `/autoreconnect config [<delayList>]` Sets the delay between each attempt<br>
`[<delayList>]` must be a Nbt List Tag containing Integers, e.g. `[3, 10, 30, 60]` or `[I;3, 10, 30, 60]`
* Support for several mods
# WolfSignal [1.16+][Fabric]
### Installation
@ -31,12 +14,6 @@ By default, it will make 4 attempts after 3, 10, 30 and 60 seconds.
* [AuthMe](https://www.curseforge.com/minecraft/mc-mods/auth-me) <br>
Cancels the countdown if you click on the Re-authenticate button to revalidate the session of the game
### Screenshots
![countdown](src/main/resources/assets/countdown.png)
![failed](src/main/resources/assets/failed.png)
### License
This mod is available under the CC0 license.

View File

@ -11,44 +11,53 @@ version = project.mod_version
group = project.maven_group
dependencies {
minecraft "com.mojang:minecraft:1.16"
mappings "net.fabricmc:yarn:1.16+build.4:v2"
modImplementation "net.fabricmc:fabric-loader:0.10.8"
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
//Fabric api
modImplementation "net.fabricmc.fabric-api:fabric-api:0.29.2+1.16"
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them.
}
processResources {
inputs.property "version", project.version
from(sourceSets.main.resources.srcDirs) {
include "fabric.mod.json"
filesMatching("fabric.mod.json") {
expand "version": project.version
}
}
from(sourceSets.main.resources.srcDirs) {
exclude "fabric.mod.json"
tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
// If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8"
// The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too
// JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used.
// We'll use that if it's available, but otherwise we'll use the older option.
def targetVersion = 8
if (JavaVersion.current().isJava9Compatible()) {
it.options.release = targetVersion
}
}
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this task, sources will not be generated.
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = "sources"
from sourceSets.main.allSource
java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
}
jar {
from "LICENSE"
from("LICENSE") {
rename { "${it}_${project.archivesBaseName}"}
}
}
// configure the maven publication
@ -65,9 +74,9 @@ publishing {
}
}
// select the repositories you want to publish to
// Select the repositories you want to publish to
// To publish to maven local, no extra repositories are necessary. Just use the task `publishToMavenLocal`.
repositories {
// uncomment to publish to the local maven
// mavenLocal()
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
}
}
}

View File

@ -2,16 +2,16 @@
org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/use
minecraft_version=1.16
yarn_mappings=1.16+build.4
loader_version=0.10.8
# check these on https://fabricmc.net/use
minecraft_version=1.16.5
yarn_mappings=1.16.5+build.1
loader_version=0.11.0
# Mod Properties
mod_version = 1.0
maven_group = de.mrgeorgen.wolfSignal
archives_base_name = wolfSignal
mod_version = 1.0.0
maven_group = de.mrgeorgen.wolfSignal
archives_base_name = wolf-signal
# Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
fabric_version=0.29.2+1.16
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
fabric_version=0.29.3+1.16

View File

@ -29,6 +29,7 @@ public class Main implements ModInitializer {
private static int cmdSignal(CommandContext<ClientCommandSource> ctx) {
signal = ctx.getArgument("signal", int.class);
disconnectedCausedByWolfSignal = true;
MinecraftClient.getInstance().world.disconnect();
signalIndex = 4;
setTick();
@ -37,6 +38,7 @@ public class Main implements ModInitializer {
private static void disconnectTimeout() {
if(disconnectTicks >= 0 && --disconnectTicks == 0) {
disconnectedCausedByWolfSignal = true;
MinecraftClient.getInstance().world.disconnect();
setTick();
}

View File

@ -7,9 +7,9 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.network.ClientCommandSource;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.command.CommandSource;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket;
import net.minecraft.server.command.CommandSource;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -5,6 +5,7 @@ import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.screen.DisconnectedScreen;
import net.minecraft.client.util.Window;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Formatting;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@ -31,12 +32,13 @@ public class MixinDisconnectedScreen
@Inject(at = @At("RETURN"), method = "render")
private void render(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo info)
{
if(!disconnectedCausedByWolfSignal) return;
Window window = MinecraftClient.getInstance().getWindow();
TextRenderer renderer = MinecraftClient.getInstance().textRenderer;
String text = getMessage();
String text = "sending signal " + signal + " using wolfs";
renderer.draw(matrices, text,
(window.getScaledWidth() - renderer.getWidth(text)) / 2F, // centered
(window.getScaledHeight() - reasonHeight) / 2F - 9 * 4, // 9 * 2 higher than the title which is 9 * 2 higher than the disconnect reason
getColor());
Formatting.GREEN.getColorValue());
}
}
}

View File

@ -45,4 +45,19 @@ public class MixinMinecraftClient
}
}
}
@Inject(at = @At("INVOKE"), method = "openScreen")
private void openScreen(Screen newScreen, CallbackInfo info) {
// old and new screen must not be the same type, actually happens very often for some reason
if ((currentScreen == null ? null : currentScreen.getClass()) != (newScreen == null ? null : newScreen.getClass())) {
if (currentScreen instanceof DisconnectedScreen && ( // exited disconnect screen using...
newScreen instanceof MultiplayerScreen || // ...cancel button on disconnect screen
newScreen instanceof TitleScreen || // ...escape key
newScreen != null && newScreen.getClass().getSimpleName().equals("AuthScreen")) || // ...AuthMe re-authenticate button
(currentScreen instanceof ConnectScreen && !(newScreen instanceof DisconnectedScreen))) // connection successful or cancelled using cancel button on connect screen
{
ticks = -1;
disconnectedCausedByWolfSignal = false;
}
}
}
}