fix: use @At("RETURN") instead of @At("TAIL") in mixins
TAIL only hooks the last return opcode, missing early returns. This caused server injection and unblocking to be skipped when servers.dat doesn't exist or when isBlockedServerHostName returns early. Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
c8c7699d9e
commit
8ca683768a
@@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
@Mixin(BlockedServers.class)
|
||||
public class BlockedServersMixin {
|
||||
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("RETURN"), cancellable = true, remap = false)
|
||||
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||
boolean contains = Domains.contains(server);
|
||||
if (contains) {
|
||||
|
||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
||||
@Final
|
||||
private List<ServerData> serverList;
|
||||
|
||||
@Inject(method = "load", at = @At("TAIL"))
|
||||
@Inject(method = "load", at = @At("RETURN"))
|
||||
public void afterLoad(CallbackInfo ci) {
|
||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
@Mixin(BlockedServers.class)
|
||||
public class BlockedServersMixin {
|
||||
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("RETURN"), cancellable = true, remap = false)
|
||||
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||
boolean contains = Domains.contains(server);
|
||||
if (contains) {
|
||||
|
||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
||||
@Final
|
||||
private List<ServerData> serverList;
|
||||
|
||||
@Inject(method = "load", at = @At("TAIL"))
|
||||
@Inject(method = "load", at = @At("RETURN"))
|
||||
public void afterLoad(CallbackInfo ci) {
|
||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
@Mixin(BlockedServers.class)
|
||||
public class BlockedServersMixin {
|
||||
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("RETURN"), cancellable = true, remap = false)
|
||||
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||
boolean contains = Domains.contains(server);
|
||||
if (contains) {
|
||||
|
||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
||||
@Final
|
||||
private List<ServerData> serverList;
|
||||
|
||||
@Inject(method = "load", at = @At("TAIL"))
|
||||
@Inject(method = "load", at = @At("RETURN"))
|
||||
public void afterLoad(CallbackInfo ci) {
|
||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
@Mixin(BlockedServers.class)
|
||||
public class BlockedServersMixin {
|
||||
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("TAIL"), cancellable = true, remap = false)
|
||||
@Inject(method = "isBlockedServerHostName", at = @At("RETURN"), cancellable = true, remap = false)
|
||||
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||
boolean contains = Domains.contains(server);
|
||||
if (contains) {
|
||||
|
||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
||||
@Final
|
||||
private List<ServerData> serverList;
|
||||
|
||||
@Inject(method = "load", at = @At("TAIL"))
|
||||
@Inject(method = "load", at = @At("RETURN"))
|
||||
public void afterLoad(CallbackInfo ci) {
|
||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
||||
|
||||
Reference in New Issue
Block a user