Skip to content

Commit a37d74b

Browse files
authored
refactor
- use the passed in parameter in the redirect instead of executing it double - trigger s&q button press instead of copypasting the code - only add menu.quitworld when in singleplayer
1 parent c69c29c commit a37d74b

4 files changed

Lines changed: 19 additions & 65 deletions

File tree

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
package me.voidxwalker.anchiale;
22

3-
import net.fabricmc.api.ClientModInitializer;
43
import org.apache.logging.log4j.LogManager;
54
import org.apache.logging.log4j.Logger;
65

7-
public class Anchiale implements ClientModInitializer {
6+
public class Anchiale {
87
public static final Logger LOGGER = LogManager.getLogger();
98
public static boolean fastReset = false;
10-
@Override
11-
public void onInitializeClient() {
12-
13-
}
149
}

src/main/java/me/voidxwalker/anchiale/mixin/GameMenuScreenMixin.java

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,33 @@
33
import me.voidxwalker.anchiale.Anchiale;
44
import net.minecraft.client.gui.screen.GameMenuScreen;
55
import net.minecraft.client.gui.screen.Screen;
6-
import net.minecraft.client.gui.screen.TitleScreen;
7-
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
86
import net.minecraft.client.gui.widget.ButtonWidget;
97
import net.minecraft.client.resource.language.I18n;
10-
import net.minecraft.client.world.ClientWorld;
11-
import net.minecraft.realms.RealmsBridge;
128
import org.spongepowered.asm.mixin.Mixin;
139
import org.spongepowered.asm.mixin.injection.At;
1410
import org.spongepowered.asm.mixin.injection.Inject;
1511
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1612

1713
@Mixin(GameMenuScreen.class)
18-
public class GameMenuScreenMixin extends Screen {
14+
public abstract class GameMenuScreenMixin extends Screen {
15+
1916
@Inject(method = "init", at = @At("TAIL"))
20-
private void addMenuQuitWorldButton(CallbackInfo ci) {
21-
this.buttons.add(new ButtonWidget(1507, this.width - 200, this.height - 20, I18n.translate("menu.quitWorld")));
17+
private void anchiale_addMenuQuitWorldButton(CallbackInfo ci) {
18+
if (this.client.isInSingleplayer()) {
19+
this.buttons.add(new ButtonWidget(1507, this.width - 106, this.height - 24, 102, 20, I18n.translate("menu.quitWorld")));
20+
}
2221
}
2322

24-
@Inject(method = "buttonClicked", at = @At("HEAD"), cancellable = true)
25-
private void onMenuQuitWorldClicked(ButtonWidget button, CallbackInfo ci) {
23+
@Inject(method = "buttonClicked", at = @At("HEAD"))
24+
private void anchiale_onMenuQuitWorldClicked(ButtonWidget button, CallbackInfo ci) {
2625
if (button.id == 1507) {
2726
Anchiale.fastReset = true;
28-
boolean bl = this.client.isIntegratedServerRunning();
29-
boolean bl2 = this.client.isConnectedToRealms();
30-
button.active = false;
31-
this.client.world.disconnect();
32-
this.client.connect((ClientWorld)null);
33-
Anchiale.fastReset = false;
34-
if (bl) {
35-
this.client.openScreen(new TitleScreen());
36-
} else if (bl2) {
37-
RealmsBridge realmsBridge = new RealmsBridge();
38-
realmsBridge.switchToRealms(new TitleScreen());
39-
} else {
40-
this.client.openScreen(new MultiplayerScreen(new TitleScreen()));
41-
}
42-
ci.cancel();
27+
button.id = 1;
4328
}
4429
}
30+
31+
@Inject(method = "buttonClicked", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/TitleScreen;<init>()V"))
32+
private void anchiale_fastResetFalse(CallbackInfo ci) {
33+
Anchiale.fastReset = false;
34+
}
4535
}
Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,25 @@
11
package me.voidxwalker.anchiale.mixin;
22

3-
import com.google.common.collect.Lists;
43
import com.google.common.util.concurrent.Futures;
5-
import com.google.common.util.concurrent.ListenableFuture;
64
import me.voidxwalker.anchiale.Anchiale;
7-
import net.minecraft.server.MinecraftServer;
85
import net.minecraft.server.integrated.IntegratedServer;
9-
import net.minecraft.server.network.ServerPlayerEntity;
10-
import org.apache.commons.lang3.Validate;
116
import org.spongepowered.asm.mixin.Mixin;
127
import org.spongepowered.asm.mixin.injection.At;
138
import org.spongepowered.asm.mixin.injection.Redirect;
149

15-
import java.io.File;
16-
import java.net.Proxy;
17-
import java.util.Iterator;
18-
import java.util.List;
19-
import java.util.concurrent.Callable;
20-
import java.util.concurrent.Executors;
2110
import java.util.concurrent.Future;
2211

2312
@Mixin(IntegratedServer.class)
24-
public abstract class IntegratedServerMixin<V> extends MinecraftServer {
25-
26-
public IntegratedServerMixin(Proxy proxy, File file) {
27-
super(proxy, file);
28-
}
13+
public abstract class IntegratedServerMixin {
2914

3015
@Redirect(method = "stopRunning", at = @At(value = "INVOKE", target = "Lcom/google/common/util/concurrent/Futures;getUnchecked(Ljava/util/concurrent/Future;)Ljava/lang/Object;"))
31-
public V e(Future<V> e){
16+
public Object anchiale_fastReset(Future<?> e){
3217
if (Anchiale.fastReset) {
3318
Anchiale.LOGGER.info("Exiting world without waiting for server tasks to finish.");
3419
return null;
3520
} else {
3621
Anchiale.LOGGER.info("Exiting world normally.");
37-
Futures.getUnchecked(this.execute(new Runnable() {
38-
public void run() {
39-
List<ServerPlayerEntity> list = Lists.newArrayList((Iterable)IntegratedServerMixin.this.getPlayerManager().getPlayers());
40-
Iterator iterator = list.iterator();
41-
42-
while(iterator.hasNext()) {
43-
ServerPlayerEntity serverPlayerEntity = (ServerPlayerEntity)iterator.next();
44-
IntegratedServerMixin.this.getPlayerManager().remove(serverPlayerEntity);
45-
}
46-
}
47-
}));
22+
return Futures.getUnchecked(e);
4823
}
49-
return null;
5024
}
5125
}

src/main/resources/fabric.mod.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@
44
"version": "${version}",
55
"name": "Anchiale",
66
"description": "",
7-
"entrypoints": {
8-
"client": [
9-
"me.voidxwalker.anchiale.Anchiale"
10-
]
11-
},
127
"authors": [
138
"RedLime?",
149
"voidxwalker",
@@ -22,6 +17,6 @@
2217
],
2318
"depends": {
2419
"fabricloader": ">=0.12.12",
25-
"minecraft": "1.8.9"
20+
"minecraft": ">=1.8 <=1.12.2"
2621
}
2722
}

0 commit comments

Comments
 (0)