Fix #237 and #238, Moved module modifications to meteor mixins (#240)

This commit is contained in:
Soda5601
2023-03-25 18:26:57 +08:00
committed by GitHub
parent 29509947c6
commit f749e5c7d9
17 changed files with 117 additions and 196 deletions

View File

@@ -1,13 +1,11 @@
package anticope.rejects.mixin;
import anticope.rejects.events.ChunkPosDataEvent;
import anticope.rejects.events.PlayerRespawnEvent;
import anticope.rejects.modules.SilentDisconnect;
import meteordevelopment.meteorclient.MeteorClient;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.utils.player.ChatUtils;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Mixin;
@@ -20,12 +18,6 @@ import static meteordevelopment.meteorclient.MeteorClient.mc;
@Mixin(ClientPlayNetworkHandler.class)
public class ClientPlayNetworkHandlerMixin {
//the normal onChunkDataEvent should just provide coords aswell
@Inject(method = "onChunkData", at = @At("TAIL"))
public void onChunkData(ChunkDataS2CPacket packet, CallbackInfo ci) {
MeteorClient.EVENT_BUS.post(ChunkPosDataEvent.get(packet.getX(), packet.getZ()));
}
//called on dimension change too
@Inject(method = "onPlayerRespawn", at = @At("TAIL"))
public void onPlayerRespawn(PlayerRespawnS2CPacket packet, CallbackInfo ci) {

View File

@@ -1,6 +1,8 @@
package anticope.rejects.mixin;
import anticope.rejects.modules.modifier.NoRenderModifier;
import anticope.rejects.mixininterface.INoRender;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.render.NoRender;
import net.minecraft.client.gui.screen.ChatInputSuggestor;
import net.minecraft.client.util.math.MatrixStack;
import org.spongepowered.asm.mixin.Mixin;
@@ -12,6 +14,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class CommandSuggestorMixin {
@Inject(method = "render", at = @At(value = "HEAD"), cancellable = true)
public void onRenderCommandSuggestion(MatrixStack matrices, int mouseX, int mouseY, CallbackInfo info) {
if (NoRenderModifier.noCommandSuggestions()) info.cancel();
if (((INoRender) Modules.get().get(NoRender.class)).noCommandSuggestions()) info.cancel();
}
}

View File

@@ -1,28 +0,0 @@
package anticope.rejects.mixin;
import anticope.rejects.events.CustomPayloadEvent;
import meteordevelopment.meteorclient.MeteorClient;
import net.minecraft.network.listener.ClientPlayPacketListener;
import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(CustomPayloadS2CPacket.class)
public class CustomPayloadS2CPacketMixin {
@Shadow
private Identifier channel;
@Inject(method = "apply(Lnet/minecraft/network/listener/ClientPlayPacketListener;)V",
at = @At(value = "HEAD"), cancellable = true)
private void onApply(ClientPlayPacketListener clientPlayPacketListener, CallbackInfo info) {
CustomPayloadS2CPacket packet = (CustomPayloadS2CPacket) (Object) this;
CustomPayloadEvent event = MeteorClient.EVENT_BUS.post(CustomPayloadEvent.get(packet));
if (event.isCancelled()) {
info.cancel();
}
}
}

View File

@@ -16,7 +16,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(StructureVoidBlock.class)
public abstract class StructureVoidBlockMixin extends Block {
public StructureVoidBlockMixin(Settings settings) {
super(settings);
}
@@ -31,5 +30,4 @@ public abstract class StructureVoidBlockMixin extends Block {
Rendering renderingModule = Modules.get().get(Rendering.class);
return !(renderingModule != null && renderingModule.renderStructureVoid());
}
}

View File

@@ -1,19 +1,19 @@
package anticope.rejects.mixin;
import anticope.rejects.modules.modifier.NoRenderModifier;
import anticope.rejects.mixininterface.INoRender;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.render.NoRender;
import net.minecraft.client.toast.Toast;
import net.minecraft.client.toast.ToastManager;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.toast.Toast;
import net.minecraft.client.toast.ToastManager;
@Mixin(ToastManager.class)
public class ToastManagerMixin {
@Inject(method="add", at = @At("HEAD"), cancellable = true)
@Inject(method = "add", at = @At("HEAD"), cancellable = true)
public void preventAdd(Toast toast, CallbackInfo ci) {
if (NoRenderModifier.disableToasts()) ci.cancel();
if (((INoRender) Modules.get().get(NoRender.class)).disableToasts()) ci.cancel();
}
}

View File

@@ -1,12 +0,0 @@
package anticope.rejects.mixin.meteor.modules;
import meteordevelopment.meteorclient.settings.SettingGroup;
import meteordevelopment.meteorclient.systems.modules.render.NoRender;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(NoRender.class)
public interface NoRenderAccessor {
@Accessor(value = "sgOverlay", remap = false)
SettingGroup getSgOverlay();
}

View File

@@ -0,0 +1,53 @@
package anticope.rejects.mixin.meteor.modules;
import anticope.rejects.mixininterface.INoRender;
import meteordevelopment.meteorclient.settings.BoolSetting;
import meteordevelopment.meteorclient.settings.Setting;
import meteordevelopment.meteorclient.settings.SettingGroup;
import meteordevelopment.meteorclient.systems.modules.Category;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.systems.modules.render.NoRender;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(value = NoRender.class,remap = false)
public class NoRenderMixin extends Module implements INoRender {
@Shadow @Final private SettingGroup sgOverlay;
private Setting<Boolean> noCommandSuggestions;
private Setting<Boolean> disableToasts;
public NoRenderMixin(Category category, String name, String description) {
super(category, name, description);
}
@Inject(method = "<init>", at = @At("TAIL"))
private void onInit(CallbackInfo ci) {
noCommandSuggestions = sgOverlay.add(new BoolSetting.Builder()
.name("command-suggestions")
.description("Disables command suggestions in chat.")
.defaultValue(false)
.build()
);
disableToasts = sgOverlay.add(new BoolSetting.Builder()
.name("disable-toasts")
.description("Disable toasts (e.g. advancements)")
.defaultValue(false)
.build()
);
}
@Override
public boolean noCommandSuggestions() {
return isActive() && noCommandSuggestions.get();
}
@Override
public boolean disableToasts() {
return isActive() && disableToasts.get();
}
}