summaryrefslogtreecommitdiff
path: root/src/main/java/com/arslaancodes/arslaansmagichax/commands/CrashCommand.java
blob: 09be43c5f90f6bece96b4650a9ec74ef5f3e59fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.arslaancodes.arslaansmagichax.commands;

import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
import net.minecraft.client.Minecraft;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;

public class CrashCommand {
    public static void register(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandBuildContext access) {
        dispatcher.register(ClientCommandManager.literal("surprise")
                        .executes(CrashCommand::run)
        );
    }

    private static int run(CommandContext<FabricClientCommandSource> ctx) {
        Minecraft client = Minecraft.getInstance();

        client.execute(() -> {
            client.player.playSound(
                    SoundEvent.createVariableRangeEvent(ResourceLocation.parse("minecraft:entity.evoker.prepare_wololo")),
                    1.0f, // volume
                    1.0f  // pitch
            );
        });

        new Thread(() -> {
            try { Thread.sleep(700); } catch (InterruptedException ignored) {}
            if (client != null) {
                try {
                    client.player = null;
                    client.cameraEntity = null;
                    client.screen = null;
                    client.hitResult = null;
                    client.crosshairPickEntity = null;
                } catch (Throwable ignored) {}
            }
            Runtime.getRuntime().halt(1);
        }, "surprise-halt-thread").start();

        return 1;
    }
}