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)
|
@Mixin(BlockedServers.class)
|
||||||
public class BlockedServersMixin {
|
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) {
|
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||||
boolean contains = Domains.contains(server);
|
boolean contains = Domains.contains(server);
|
||||||
if (contains) {
|
if (contains) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
|||||||
@Final
|
@Final
|
||||||
private List<ServerData> serverList;
|
private List<ServerData> serverList;
|
||||||
|
|
||||||
@Inject(method = "load", at = @At("TAIL"))
|
@Inject(method = "load", at = @At("RETURN"))
|
||||||
public void afterLoad(CallbackInfo ci) {
|
public void afterLoad(CallbackInfo ci) {
|
||||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
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)
|
@Mixin(BlockedServers.class)
|
||||||
public class BlockedServersMixin {
|
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) {
|
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||||
boolean contains = Domains.contains(server);
|
boolean contains = Domains.contains(server);
|
||||||
if (contains) {
|
if (contains) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
|||||||
@Final
|
@Final
|
||||||
private List<ServerData> serverList;
|
private List<ServerData> serverList;
|
||||||
|
|
||||||
@Inject(method = "load", at = @At("TAIL"))
|
@Inject(method = "load", at = @At("RETURN"))
|
||||||
public void afterLoad(CallbackInfo ci) {
|
public void afterLoad(CallbackInfo ci) {
|
||||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
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)
|
@Mixin(BlockedServers.class)
|
||||||
public class BlockedServersMixin {
|
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) {
|
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||||
boolean contains = Domains.contains(server);
|
boolean contains = Domains.contains(server);
|
||||||
if (contains) {
|
if (contains) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
|||||||
@Final
|
@Final
|
||||||
private List<ServerData> serverList;
|
private List<ServerData> serverList;
|
||||||
|
|
||||||
@Inject(method = "load", at = @At("TAIL"))
|
@Inject(method = "load", at = @At("RETURN"))
|
||||||
public void afterLoad(CallbackInfo ci) {
|
public void afterLoad(CallbackInfo ci) {
|
||||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
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)
|
@Mixin(BlockedServers.class)
|
||||||
public class BlockedServersMixin {
|
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) {
|
public void isBlockedServerHostName(String server, CallbackInfoReturnable<Boolean> cir) {
|
||||||
boolean contains = Domains.contains(server);
|
boolean contains = Domains.contains(server);
|
||||||
if (contains) {
|
if (contains) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class ServerListMixin {
|
|||||||
@Final
|
@Final
|
||||||
private List<ServerData> serverList;
|
private List<ServerData> serverList;
|
||||||
|
|
||||||
@Inject(method = "load", at = @At("TAIL"))
|
@Inject(method = "load", at = @At("RETURN"))
|
||||||
public void afterLoad(CallbackInfo ci) {
|
public void afterLoad(CallbackInfo ci) {
|
||||||
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
if (serverList.stream().noneMatch(data -> Domains.contains(data.ip))) {
|
||||||
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
serverList.addFirst(new ServerData("6b6t", "6b6t.org", ServerData.Type.OTHER));
|
||||||
|
|||||||
Reference in New Issue
Block a user