Merge branch 'master' of https://github.com/Moles-LLC/Shadow
This commit is contained in:
commit
b497d59a26
100 changed files with 622 additions and 903 deletions
src/main/java/net/shadow/client
feature
addon
command
Command.java
argument
coloring
impl
ApplyVel.javaAsConsole.javaAuthor.javaBan.javaBind.javaBoot.javaCheckCmd.javaClearInventory.javaConfig.javaConfigUtils.javaCrash.javaDamage.javaDrop.javaEVclip.javaEffect.javaEquip.javaFakeItem.javaFind.javaFloodLuckperms.javaForEach.javaForceOP.javaGamemode.javaHClip.javaHelp.javaHologram.javaImage.javaInject.javaInvsee.javaItemData.javaItemExploit.javaItemSpoof.javaKickSelf.javaKickall.javaKill.javaLinkWolf.javaLogFlood.javaMessageSpam.javaPanic.javaPermissionLevel.javaPoof.javaRageQuit.javaRandomBook.javaRename.javaSay.javaServerCrash.javaSpawnData.javaStopServer.javaTaco.javaTest.javaTitleLag.javaToggle.javaVClip.javaViewNbt.java
gui
clickgui
screen
AddonManagerScreen.javaBindScreen.javaConsoleScreen.javaSpotLightScreen.javaStatsScreen.javaTestScreen.java
widget
module
helper
mixin
|
@ -76,6 +76,7 @@ public class AddonManager {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
|
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
|
||||||
|
//noinspection ResultOfMethodCallIgnored
|
||||||
file.toFile().delete();
|
file.toFile().delete();
|
||||||
return FileVisitResult.CONTINUE;
|
return FileVisitResult.CONTINUE;
|
||||||
}
|
}
|
||||||
|
@ -295,4 +296,3 @@ public class AddonManager {
|
||||||
record AddonEntry(File sourceFile, String name, String description, String[] devs, Addon registeredAddon) {
|
record AddonEntry(File sourceFile, String name, String description, String[] devs, Addon registeredAddon) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,12 @@ package net.shadow.client.feature.command;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public abstract class Command extends Utils.Logging {
|
public abstract class Command extends Utils.Logging {
|
||||||
|
|
||||||
public final MinecraftClient client = MinecraftClient.getInstance();
|
public final MinecraftClient client = MinecraftClient.getInstance();
|
||||||
|
@ -49,8 +52,6 @@ public abstract class Command extends Utils.Logging {
|
||||||
return aliases;
|
return aliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex);
|
|
||||||
|
|
||||||
public abstract void onExecute(String[] args) throws CommandException;
|
public abstract void onExecute(String[] args) throws CommandException;
|
||||||
|
|
||||||
protected void validateArgumentsLength(String[] args, int requiredLength, String message) throws CommandException {
|
protected void validateArgumentsLength(String[] args, int requiredLength, String message) throws CommandException {
|
||||||
|
@ -58,8 +59,23 @@ public abstract class Command extends Utils.Logging {
|
||||||
throw new CommandException("Invalid number of arguments: " + requiredLength + " arguments required", message);
|
throw new CommandException("Invalid number of arguments: " + requiredLength + " arguments required", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return new String[0];
|
Object[] sug = getSuggestions(args, index);
|
||||||
|
if (sug != null && sug.length > 0) {
|
||||||
|
Object sample = sug[0];
|
||||||
|
ArgumentType type = null;
|
||||||
|
for (ArgumentType value : ArgumentType.values()) {
|
||||||
|
if (Arrays.stream(value.getAppliesTo()).anyMatch(aClass -> aClass.isAssignableFrom(sample.getClass()))) {
|
||||||
|
type = value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new PossibleArgument(type, Arrays.stream(sug).map(Object::toString).toList().toArray(String[]::new));
|
||||||
|
}
|
||||||
|
return new PossibleArgument(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Object[] getSuggestions(String[] args, int lookingAtArgIndex) {
|
||||||
|
return new Object[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
public class StreamlineArgumentParser {
|
public class StreamlineArgumentParser {
|
||||||
String[] args;
|
final String[] args;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
|
||||||
public StreamlineArgumentParser(String[] args) {
|
public StreamlineArgumentParser(String[] args) {
|
||||||
|
|
|
@ -4,19 +4,29 @@
|
||||||
|
|
||||||
package net.shadow.client.feature.command.coloring;
|
package net.shadow.client.feature.command.coloring;
|
||||||
|
|
||||||
|
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
||||||
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
|
||||||
public enum ArgumentType {
|
public enum ArgumentType {
|
||||||
STRING(new Color(0x55FF55)),
|
STRING(new Color(0x55FF55), String.class),
|
||||||
NUMBER(new Color(0x009DFF)),
|
NUMBER(new Color(0x009DFF), Integer.class, Double.class, Float.class, Long.class),
|
||||||
PLAYER(new Color(0xFF9900));
|
PLAYER(new Color(0xFF9900), PlayerEntity.class, AbstractClientPlayerEntity.class, LivingEntity.class);
|
||||||
final Color color;
|
final Color color;
|
||||||
|
final Class<?>[] appliesTo;
|
||||||
|
|
||||||
ArgumentType(Color color) {
|
ArgumentType(Color color, Class<?>... appliesToClass) {
|
||||||
this.color = color;
|
this.color = color;
|
||||||
|
this.appliesTo = appliesToClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Class<?>[] getAppliesTo() {
|
||||||
|
return appliesTo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Shadow client, 0x150, Saturn5VFive 2022. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.shadow.client.feature.command.coloring;
|
||||||
|
|
||||||
|
public class PossibleArgument {
|
||||||
|
String[] suggestions;
|
||||||
|
ArgumentType type;
|
||||||
|
|
||||||
|
public PossibleArgument(ArgumentType type, String... suggestions) {
|
||||||
|
this.suggestions = suggestions;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArgumentType getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getSuggestions() {
|
||||||
|
return suggestions;
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,8 +5,8 @@
|
||||||
package net.shadow.client.feature.command.coloring;
|
package net.shadow.client.feature.command.coloring;
|
||||||
|
|
||||||
public class StaticArgumentServer {
|
public class StaticArgumentServer {
|
||||||
public static ArgumentType serveFromStatic(int index, ArgumentType... types) {
|
public static PossibleArgument serveFromStatic(int index, PossibleArgument... types) {
|
||||||
if (index >= types.length) return null;
|
if (index >= types.length) return new PossibleArgument(null);
|
||||||
return types[index];
|
return types[index];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.StreamlineArgumentParser;
|
import net.shadow.client.feature.command.argument.StreamlineArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
public class ApplyVel extends Command {
|
public class ApplyVel extends Command {
|
||||||
|
@ -18,20 +18,13 @@ public class ApplyVel extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.NUMBER, ArgumentType.NUMBER, ArgumentType.NUMBER);
|
return switch (index) {
|
||||||
}
|
case 0 -> new PossibleArgument(ArgumentType.STRING, "(x velocity)");
|
||||||
|
case 1 -> new PossibleArgument(ArgumentType.STRING, "(y velocity)");
|
||||||
@Override
|
case 2 -> new PossibleArgument(ArgumentType.STRING, "(z velocity)");
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
default -> super.getSuggestionsWithType(index, args);
|
||||||
if (args.length == 1) {
|
};
|
||||||
return new String[]{"(x velocity)"};
|
|
||||||
} else if (args.length == 2) {
|
|
||||||
return new String[]{"(y velocity)"};
|
|
||||||
} else if (args.length == 3) {
|
|
||||||
return new String[]{"(z velocity)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,6 +17,7 @@ import net.minecraft.util.math.Direction;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
public class AsConsole extends Command {
|
public class AsConsole extends Command {
|
||||||
|
@ -25,16 +26,8 @@ public class AsConsole extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length > 0) {
|
return new PossibleArgument(ArgumentType.STRING, "(command)");
|
||||||
return new String[]{"(command)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return ArgumentType.STRING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.nbt.NbtString;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
public class Author extends Command {
|
public class Author extends Command {
|
||||||
|
@ -18,16 +19,8 @@ public class Author extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length > 0) {
|
return new PossibleArgument(ArgumentType.STRING, "(new author)");
|
||||||
return new String[]{"(new author)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return ArgumentType.STRING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,7 +13,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
|
||||||
|
@ -24,17 +24,12 @@ public class Ban extends Command {
|
||||||
super("Ban", "Ban people from re-joining the server", "ban", "block");
|
super("Ban", "Ban people from re-joining the server", "ban", "block");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
if (index == 0)
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
return new PossibleArgument(ArgumentType.PLAYER, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new));
|
||||||
}
|
return super.getSuggestionsWithType(index, args);
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,7 +7,7 @@ package net.shadow.client.feature.command.impl;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.feature.gui.screen.BindScreen;
|
import net.shadow.client.feature.gui.screen.BindScreen;
|
||||||
import net.shadow.client.feature.module.Module;
|
import net.shadow.client.feature.module.Module;
|
||||||
|
@ -20,16 +20,10 @@ public class Bind extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
if (index == 0)
|
||||||
return ModuleRegistry.getModules().stream().map(Module::getName).toList().toArray(String[]::new);
|
return new PossibleArgument(ArgumentType.STRING, ModuleRegistry.getModules().stream().map(Module::getName).toList().toArray(String[]::new));
|
||||||
}
|
return super.getSuggestionsWithType(index, args);
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,18 +13,12 @@ import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
|
|
||||||
public class Boot extends Command {
|
public class Boot extends Command {
|
||||||
public Boot() {
|
public Boot() {
|
||||||
super("Boot", "Kicks all players in render distance", "boot");
|
super("Boot", "Kicks all players in render distance", "boot");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
ItemStack boot = new ItemStack(Items.WRITTEN_BOOK, 1);
|
ItemStack boot = new ItemStack(Items.WRITTEN_BOOK, 1);
|
||||||
|
|
|
@ -9,18 +9,12 @@ import net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
|
|
||||||
public class CheckCmd extends Command {
|
public class CheckCmd extends Command {
|
||||||
public CheckCmd() {
|
public CheckCmd() {
|
||||||
super("CheckCmd", "Check if command blocks are enabled", "checkCmd");
|
super("CheckCmd", "Check if command blocks are enabled", "checkCmd");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
message("Checking command blocks");
|
message("Checking command blocks");
|
||||||
|
|
|
@ -7,23 +7,12 @@ package net.shadow.client.feature.command.impl;
|
||||||
import net.minecraft.screen.slot.SlotActionType;
|
import net.minecraft.screen.slot.SlotActionType;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
|
|
||||||
public class ClearInventory extends Command {
|
public class ClearInventory extends Command {
|
||||||
public ClearInventory() {
|
public ClearInventory() {
|
||||||
super("ClearInventory", "Clear your inventory the cool way", "clear", "clearInv", "void");
|
super("ClearInventory", "Clear your inventory the cool way", "clear", "clearInv", "void");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
for (int i = 9; i < 45; i++) {
|
for (int i = 9; i < 45; i++) {
|
||||||
|
|
|
@ -6,7 +6,7 @@ package net.shadow.client.feature.command.impl;
|
||||||
|
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.config.SettingBase;
|
import net.shadow.client.feature.config.SettingBase;
|
||||||
import net.shadow.client.feature.module.Module;
|
import net.shadow.client.feature.module.Module;
|
||||||
import net.shadow.client.feature.module.ModuleRegistry;
|
import net.shadow.client.feature.module.ModuleRegistry;
|
||||||
|
@ -21,20 +21,18 @@ public class Config extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.STRING, ArgumentType.STRING);
|
return switch (index) {
|
||||||
}
|
case 0 ->
|
||||||
|
new PossibleArgument(ArgumentType.STRING, ModuleRegistry.getModules().stream().map(mod -> mod.getName().replaceAll(" ", "-")).toList().toArray(String[]::new));
|
||||||
@Override
|
case 1 -> {
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
if (ModuleRegistry.getByName(args[0]) != null) {
|
||||||
if (args.length == 1) {
|
yield new PossibleArgument(ArgumentType.STRING, Objects.requireNonNull(ModuleRegistry.getByName(args[0].replaceAll("-", " "))).config.getSettings().stream().map(SettingBase::getName).toList().toArray(String[]::new));
|
||||||
return ModuleRegistry.getModules().stream().map(mod -> mod.getName().replaceAll(" ", "-")).toList().toArray(String[]::new);
|
} else yield super.getSuggestionsWithType(index, args);
|
||||||
} else if (args.length == 2 && ModuleRegistry.getByName(args[0]) != null) {
|
}
|
||||||
return Objects.requireNonNull(ModuleRegistry.getByName(args[0].replaceAll("-", " "))).config.getSettings().stream().map(SettingBase::getName).toList().toArray(String[]::new);
|
case 2 -> new PossibleArgument(ArgumentType.STRING, "(New value)");
|
||||||
} else if (args.length == 3) {
|
default -> super.getSuggestionsWithType(index, args);
|
||||||
return new String[]{"(New value)"};
|
};
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,6 +17,7 @@ import net.minecraft.text.Text;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.feature.config.SettingBase;
|
import net.shadow.client.feature.config.SettingBase;
|
||||||
|
@ -42,18 +43,8 @@ public class ConfigUtils extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "load", "save"), new PossibleArgument(ArgumentType.STRING, Arrays.stream(Objects.requireNonNull(CONFIG_STORAGE.listFiles())).map(File::getName).toList().toArray(String[]::new)));
|
||||||
return new String[]{"load", "save"};
|
|
||||||
} else if (args.length == 2 && args[0].equalsIgnoreCase("load")) {
|
|
||||||
return Arrays.stream(Objects.requireNonNull(CONFIG_STORAGE.listFiles())).map(File::getName).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -21,16 +22,8 @@ public class Crash extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new)));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -19,16 +20,8 @@ public class Damage extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.NUMBER, "(amount)"));
|
||||||
return new String[]{"(amount)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.NUMBER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
package net.shadow.client.feature.command.impl;
|
package net.shadow.client.feature.command.impl;
|
||||||
|
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
|
||||||
public class Drop extends Command {
|
public class Drop extends Command {
|
||||||
|
@ -14,11 +13,6 @@ public class Drop extends Command {
|
||||||
super("Drop", "Drops all items in your inventory", "drop", "d", "throw");
|
super("Drop", "Drops all items in your inventory", "drop", "d", "throw");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
for (int i = 0; i < 36; i++) {
|
for (int i = 0; i < 36; i++) {
|
||||||
|
|
|
@ -9,6 +9,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -18,16 +19,8 @@ public class EVclip extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.NUMBER, "(amount)"));
|
||||||
return new String[]{"(amount)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.NUMBER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
public class Effect extends Command {
|
public class Effect extends Command {
|
||||||
|
@ -19,29 +20,17 @@ public class Effect extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
if (index == 0) return new PossibleArgument(ArgumentType.STRING, "give", "clear");
|
||||||
return new String[]{"give", "clear"};
|
else if (args[0].equalsIgnoreCase("give")) {
|
||||||
} else if (args.length == 2 && args[0].equalsIgnoreCase("give")) {
|
return switch (index) {
|
||||||
return new String[]{"(effect id)"};
|
case 1 -> new PossibleArgument(ArgumentType.NUMBER, "(effect id)");
|
||||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("give")) {
|
case 2 -> new PossibleArgument(ArgumentType.NUMBER, "(duration)");
|
||||||
return new String[]{"(duration)"};
|
case 3 -> new PossibleArgument(ArgumentType.NUMBER, "(strength)");
|
||||||
} else if (args.length == 4 && args[0].equalsIgnoreCase("give")) {
|
default -> super.getSuggestionsWithType(index, args);
|
||||||
return new String[]{"(strength)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
if (lookingAtArgIndex == 0) return ArgumentType.STRING;
|
|
||||||
if (args[0].equalsIgnoreCase("give")) {
|
|
||||||
return switch (lookingAtArgIndex) {
|
|
||||||
case 1, 2, 3 -> ArgumentType.NUMBER;
|
|
||||||
default -> null;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return null;
|
return super.getSuggestionsWithType(index, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -8,6 +8,7 @@ import net.minecraft.screen.slot.SlotActionType;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -17,16 +18,8 @@ public class Equip extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "head", "chest", "legs", "feet"));
|
||||||
return new String[]{"head", "chest", "legs", "feet"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,6 +16,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -27,24 +28,19 @@ public class FakeItem extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return switch (index) {
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
case 0 ->
|
||||||
} else if (args.length == 2) {
|
new PossibleArgument(ArgumentType.STRING, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new));
|
||||||
return new String[]{"hand", "custom:(item id) [item nbt]"};
|
case 1 -> new PossibleArgument(ArgumentType.STRING, "hand", "custom:(item id) [item nbt]");
|
||||||
} else if (args.length == 3 && args[1].toLowerCase().startsWith("custom:")) {
|
case 2 -> {
|
||||||
return new String[]{"(item nbt)"};
|
if (args[1].toLowerCase().startsWith("custom:")) {
|
||||||
}
|
yield new PossibleArgument(ArgumentType.STRING, "(item nbt)");
|
||||||
return super.getSuggestions(fullCommand, args);
|
}
|
||||||
}
|
yield super.getSuggestionsWithType(index, args);
|
||||||
|
}
|
||||||
@Override
|
default -> super.getSuggestionsWithType(index, args);
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
};
|
||||||
if (lookingAtArgIndex == 0) return ArgumentType.PLAYER;
|
|
||||||
if (lookingAtArgIndex == 1 || lookingAtArgIndex == 2)
|
|
||||||
return ArgumentType.STRING; // fakeitem target custom:dogshit
|
|
||||||
if (args.length > 2) return ArgumentType.STRING; // nbt
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -20,6 +20,7 @@ import net.minecraft.util.math.Vec3d;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.event.EventListener;
|
import net.shadow.client.helper.event.EventListener;
|
||||||
|
@ -107,16 +108,8 @@ public class Find extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "(uuid)"));
|
||||||
return new String[]{"(uuid)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -126,7 +119,6 @@ public class Find extends Command {
|
||||||
error("Cant find the player, need GMC");
|
error("Cant find the player, need GMC");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UUID u = Utils.Players.getUUIDFromName(args[0]);
|
UUID u = Utils.Players.getUUIDFromName(args[0]);
|
||||||
if (u == null) {
|
if (u == null) {
|
||||||
error("Couldn't find user's uuid.");
|
error("Couldn't find user's uuid.");
|
||||||
|
|
|
@ -8,6 +8,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -19,16 +20,8 @@ public class FloodLuckperms extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.NUMBER, "(amount)"));
|
||||||
return new String[]{"(amount)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.NUMBER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,6 +13,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.event.EventType;
|
import net.shadow.client.helper.event.EventType;
|
||||||
|
@ -50,20 +51,8 @@ public class ForEach extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "player", "tab"), new PossibleArgument(ArgumentType.NUMBER, "(delay)"), new PossibleArgument(ArgumentType.NUMBER, "(message)"));
|
||||||
return new String[]{"player", "tab"};
|
|
||||||
} else if (args.length == 2) {
|
|
||||||
return new String[]{"(delay)"};
|
|
||||||
} else if (args.length == 3) {
|
|
||||||
return new String[]{"(string)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.NUMBER, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,7 +17,6 @@ import net.minecraft.util.hit.HitResult;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
public class ForceOP extends Command {
|
public class ForceOP extends Command {
|
||||||
|
@ -25,11 +24,6 @@ public class ForceOP extends Command {
|
||||||
super("ForceOP", "Edit command blocks on paper 1.14 - 1.17", "forceop", "editcmd");
|
super("ForceOP", "Edit command blocks on paper 1.14 - 1.17", "forceop", "editcmd");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return ArgumentType.STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) throws CommandException {
|
public void onExecute(String[] args) throws CommandException {
|
||||||
validateArgumentsLength(args, 1, "Provide command");
|
validateArgumentsLength(args, 1, "Provide command");
|
||||||
|
|
|
@ -8,6 +8,7 @@ import net.minecraft.world.GameMode;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -20,16 +21,8 @@ public class Gamemode extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, Arrays.stream(GameMode.values()).map(GameMode::getName).toList().toArray(String[]::new)));
|
||||||
return Arrays.stream(GameMode.values()).map(GameMode::getName).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.DoubleArgumentParser;
|
import net.shadow.client.feature.command.argument.DoubleArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -19,16 +20,8 @@ public class HClip extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.NUMBER, "(amount)"));
|
||||||
return new String[]{"(amount)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.NUMBER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -6,7 +6,6 @@ package net.shadow.client.feature.command.impl;
|
||||||
|
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.CommandRegistry;
|
import net.shadow.client.feature.command.CommandRegistry;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
|
||||||
|
@ -16,11 +15,6 @@ public class Help extends Command {
|
||||||
super("Help", "Shows all commands", "help", "h", "?", "cmds", "commands");
|
super("Help", "Shows all commands", "help", "h", "?", "cmds", "commands");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
message("All commands and their description");
|
message("All commands and their description");
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.util.math.Vec3d;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.manager.HologramManager;
|
import net.shadow.client.helper.manager.HologramManager;
|
||||||
|
@ -24,19 +25,8 @@ public class Hologram extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "(flags)"), new PossibleArgument(ArgumentType.STRING, "(message)"));
|
||||||
return new String[]{"(flags)"};
|
|
||||||
}
|
|
||||||
if (args.length == 2) {
|
|
||||||
return new String[]{"(message)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -15,6 +15,7 @@ import net.minecraft.util.hit.BlockHitResult;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.event.EventType;
|
import net.shadow.client.helper.event.EventType;
|
||||||
|
@ -48,22 +49,10 @@ public class Image extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "chat", "book", "lore"),
|
||||||
return new String[]{"chat", "book", "lore"};
|
new PossibleArgument(ArgumentType.STRING, "(url)"),
|
||||||
}
|
new PossibleArgument(ArgumentType.NUMBER, "(size)"));
|
||||||
if (args.length == 2) {
|
|
||||||
return new String[]{"(url)"};
|
|
||||||
}
|
|
||||||
if (args.length == 3) {
|
|
||||||
return new String[]{"(size)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.STRING, ArgumentType.NUMBER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,8 @@ import net.minecraft.nbt.StringNbtReader;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
public class Inject extends Command {
|
public class Inject extends Command {
|
||||||
|
@ -18,13 +20,8 @@ public class Inject extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return super.getSuggestions(fullCommand, args);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "(nbt)"));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return ArgumentType.STRING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
@ -23,16 +24,8 @@ public class Invsee extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new)));
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,6 +13,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -24,22 +25,10 @@ public class ItemData extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.PLAYER, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new)),
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
new PossibleArgument(ArgumentType.STRING, "hand", "offhand", "head", "chest", "legs", "feet"),
|
||||||
}
|
new PossibleArgument(ArgumentType.STRING, "--onlyShow"));
|
||||||
if (args.length == 2) {
|
|
||||||
return new String[]{"hand", "offhand", "head", "chest", "legs", "feet"};
|
|
||||||
}
|
|
||||||
if (args.length == 3) {
|
|
||||||
return new String[]{"--onlyShow"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER, ArgumentType.STRING, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.feature.items.Item;
|
import net.shadow.client.feature.items.Item;
|
||||||
import net.shadow.client.feature.items.ItemRegistry;
|
import net.shadow.client.feature.items.ItemRegistry;
|
||||||
|
@ -28,10 +28,10 @@ public class ItemExploit extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
if (index == 0)
|
||||||
return ItemRegistry.instance.getItems().stream().map(Item::getName).toList().toArray(String[]::new);
|
return new PossibleArgument(ArgumentType.STRING, ItemRegistry.instance.getItems().stream().map(Item::getName).toList().toArray(String[]::new));
|
||||||
} else if (args.length > 1) {
|
else {
|
||||||
String eName = args[0];
|
String eName = args[0];
|
||||||
Item meant = null;
|
Item meant = null;
|
||||||
for (Item item : ItemRegistry.instance.getItems()) {
|
for (Item item : ItemRegistry.instance.getItems()) {
|
||||||
|
@ -41,26 +41,18 @@ public class ItemExploit extends Command {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (meant == null || meant.getOptions().length == 0) {
|
if (meant == null || meant.getOptions().length == 0) {
|
||||||
return new String[0];
|
return super.getSuggestionsWithType(index, args);
|
||||||
}
|
}
|
||||||
List<String> alreadyFilledOut = new ArrayList<>(Arrays.asList(Arrays.copyOfRange(args, 1, args.length)));
|
List<String> alreadyFilledOut = new ArrayList<>(Arrays.asList(Arrays.copyOfRange(args, 1, args.length)));
|
||||||
// return all options mapped to start with --, and filter them based on what we already filled out
|
return new PossibleArgument(ArgumentType.STRING, Arrays.stream(meant.getOptions()).map(option -> "--" + option.getName()).filter(s -> alreadyFilledOut.stream().noneMatch(s1 -> s1.equalsIgnoreCase(s))).toList().toArray(String[]::new));
|
||||||
return Arrays.stream(meant.getOptions()).map(option -> "--" + option.getName()).filter(s -> alreadyFilledOut.stream().noneMatch(s1 -> s1.equalsIgnoreCase(s))).toList().toArray(String[]::new);
|
|
||||||
}
|
}
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) throws CommandException {
|
public void onExecute(String[] args) throws CommandException {
|
||||||
validateArgumentsLength(args, 1, "Provide exploit name");
|
validateArgumentsLength(args, 1, "Provide exploit name");
|
||||||
if (!ShadowMain.client.interactionManager.hasCreativeInventory()) {
|
if (!ShadowMain.client.interactionManager.hasCreativeInventory()) {
|
||||||
error("No creative inventory present - can't generate");
|
throw new CommandException("No creative inventory, can't generate", "get real");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
String n = args[0].toLowerCase();
|
String n = args[0].toLowerCase();
|
||||||
Item meant = null;
|
Item meant = null;
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -21,18 +22,9 @@ public class ItemSpoof extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, Registry.ITEM.stream().map(p -> Registry.ITEM.getId(p).toString()).toList().toArray(String[]::new)),
|
||||||
return Registry.ITEM.stream().map(p -> Registry.ITEM.getId(p).toString()).toList().toArray(String[]::new);
|
new PossibleArgument(ArgumentType.NUMBER, "(amount)"));
|
||||||
} else if (args.length == 2) {
|
|
||||||
return new String[]{"(amount)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.NUMBER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.minecraft.util.Hand;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -21,16 +22,8 @@ public class KickSelf extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "quit", "chars", "packet", "self", "spam", "packets"));
|
||||||
return new String[]{"quit", "chars", "packet", "self", "spam", "packets"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -18,7 +18,6 @@ import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
|
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
|
@ -27,11 +26,6 @@ public class Kickall extends Command {
|
||||||
super("Kickall", "Kicks every single person on an offline server", "kickall");
|
super("Kickall", "Kicks every single person on an offline server", "kickall");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
InetSocketAddress sa = (InetSocketAddress) ShadowMain.client.getNetworkHandler().getConnection().getAddress();
|
InetSocketAddress sa = (InetSocketAddress) ShadowMain.client.getNetworkHandler().getConnection().getAddress();
|
||||||
|
|
|
@ -28,6 +28,7 @@ import net.minecraft.util.math.Vec3d;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.event.EventType;
|
import net.shadow.client.helper.event.EventType;
|
||||||
|
@ -64,16 +65,8 @@ public class Kill extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.PLAYER, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new)));
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void handlePacket(PacketEvent pe) {
|
void handlePacket(PacketEvent pe) {
|
||||||
|
@ -124,8 +117,8 @@ public class Kill extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
void makeKillPotAt(BlockHitResult bhr, Vec3d target) {
|
void makeKillPotAt(BlockHitResult bhr, Vec3d target) {
|
||||||
target = target.add(0, 2.7, 0);
|
Vec3d target1 = target.add(0, 2.7, 0);
|
||||||
ItemStack s = Utils.generateItemStackWithMeta("{data: [], palette: [], EntityTag: {Item: {Count: 1b, id: \"minecraft:splash_potion\", tag: {CustomPotionEffects: [{ShowParticles: 1b, Duration: 20, Id: 6b, Amplifier: 125b}], Potion: \"minecraft:awkward\"}}, Pos: [" + target.x + "d, " + target.y + "d, " + target.z + "d], Motion: [0d,-5d,0d], id: \"minecraft:potion\", LeftOwner: 1b}}", Items.BAT_SPAWN_EGG);
|
ItemStack s = Utils.generateItemStackWithMeta("{data: [], palette: [], EntityTag: {Item: {Count: 1b, id: \"minecraft:splash_potion\", tag: {CustomPotionEffects: [{ShowParticles: 1b, Duration: 20, Id: 6b, Amplifier: 125b}], Potion: \"minecraft:awkward\"}}, Pos: [" + target1.x + "d, " + target1.y + "d, " + target1.z + "d], Motion: [0d,-5d,0d], id: \"minecraft:potion\", LeftOwner: 1b}}", Items.BAT_SPAWN_EGG);
|
||||||
assert ShadowMain.client.player != null;
|
assert ShadowMain.client.player != null;
|
||||||
CreativeInventoryActionC2SPacket pack = new CreativeInventoryActionC2SPacket(Utils.Inventory.slotIndexToId(ShadowMain.client.player.getInventory().selectedSlot), s);
|
CreativeInventoryActionC2SPacket pack = new CreativeInventoryActionC2SPacket(Utils.Inventory.slotIndexToId(ShadowMain.client.player.getInventory().selectedSlot), s);
|
||||||
Objects.requireNonNull(ShadowMain.client.getNetworkHandler()).sendPacket(pack);
|
Objects.requireNonNull(ShadowMain.client.getNetworkHandler()).sendPacket(pack);
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
|
|
||||||
package net.shadow.client.feature.command.impl;
|
package net.shadow.client.feature.command.impl;
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -22,6 +20,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
@ -34,16 +33,8 @@ public class LinkWolf extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.PLAYER, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new)));
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(AbstractClientPlayerEntity::getGameProfile).map(GameProfile::getName).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,7 +13,6 @@ import net.minecraft.nbt.NbtString;
|
||||||
import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket;
|
import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
@ -22,17 +21,12 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
|
||||||
public class LogFlood extends Command {
|
public class LogFlood extends Command {
|
||||||
AtomicBoolean running = new AtomicBoolean(false);
|
final AtomicBoolean running = new AtomicBoolean(false);
|
||||||
|
|
||||||
public LogFlood() {
|
public LogFlood() {
|
||||||
super("LogFlood", "Floods the log files of players in render distance", "logflood", "lflood");
|
super("LogFlood", "Floods the log files of players in render distance", "logflood", "lflood");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
if (running.get()) {
|
if (running.get()) {
|
||||||
|
|
|
@ -8,6 +8,8 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -18,20 +20,8 @@ public class MessageSpam extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (lookingAtArgIndex == 0) return ArgumentType.NUMBER;
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.NUMBER, "(amount)"), new PossibleArgument(ArgumentType.STRING, "(message)"));
|
||||||
return ArgumentType.STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return new String[]{"(amount)"};
|
|
||||||
}
|
|
||||||
if (args.length > 1) {
|
|
||||||
return new String[]{"(message)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,6 +7,7 @@ package net.shadow.client.feature.command.impl;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.module.Module;
|
import net.shadow.client.feature.module.Module;
|
||||||
import net.shadow.client.feature.module.ModuleRegistry;
|
import net.shadow.client.feature.module.ModuleRegistry;
|
||||||
|
@ -24,16 +25,8 @@ public class Panic extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "hard", "restore"));
|
||||||
return new String[]{"hard", "restore"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -8,6 +8,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -17,16 +18,8 @@ public class PermissionLevel extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.NUMBER);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.NUMBER, "1", "2", "3", "4"));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return new String[]{"1", "2", "3", "4"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,6 +13,7 @@ import net.minecraft.screen.slot.SlotActionType;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -27,16 +28,8 @@ public class Poof extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.PLAYER, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new)));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -6,7 +6,6 @@ package net.shadow.client.feature.command.impl;
|
||||||
|
|
||||||
import net.minecraft.client.util.GlfwUtil;
|
import net.minecraft.client.util.GlfwUtil;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
import org.apache.commons.lang3.SystemUtils;
|
import org.apache.commons.lang3.SystemUtils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -40,11 +39,6 @@ public class RageQuit extends Command {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import net.minecraft.network.packet.c2s.play.BookUpdateC2SPacket;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -25,19 +26,8 @@ public class RandomBook extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.NUMBER);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "ascii", "raw", "unicode"), new PossibleArgument(ArgumentType.NUMBER, "(pages)"));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return new String[]{"Ascii", "Raw", "Unicode"};
|
|
||||||
}
|
|
||||||
if (args.length == 2) {
|
|
||||||
return new String[]{"(pages)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -48,9 +38,7 @@ public class RandomBook extends Command {
|
||||||
case "raw" -> {
|
case "raw" -> {
|
||||||
List<String> title = new ArrayList<>();
|
List<String> title = new ArrayList<>();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
StringBuilder page2 = new StringBuilder();
|
title.add(String.valueOf((char) 2048).repeat(266));
|
||||||
page2.append(String.valueOf((char) 2048).repeat(266));
|
|
||||||
title.add(page2.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<String> pages = Optional.of("Raw");
|
Optional<String> pages = Optional.of("Raw");
|
||||||
|
@ -75,7 +63,7 @@ public class RandomBook extends Command {
|
||||||
|
|
||||||
case "unicode" -> {
|
case "unicode" -> {
|
||||||
IntStream chars = new Random().ints(0, 0x10FFFF + 1);
|
IntStream chars = new Random().ints(0, 0x10FFFF + 1);
|
||||||
String text = chars.limit(210 * Math.round(size)).mapToObj(i -> String.valueOf((char) i)).collect(Collectors.joining());
|
String text = chars.limit(210L * Math.round(size)).mapToObj(i -> String.valueOf((char) i)).collect(Collectors.joining());
|
||||||
List<String> title2 = new ArrayList<>();
|
List<String> title2 = new ArrayList<>();
|
||||||
Optional<String> pages2 = Optional.of("Unicode");
|
Optional<String> pages2 = Optional.of("Unicode");
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@ import net.minecraft.text.Text;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
|
||||||
|
@ -22,16 +24,8 @@ public class Rename extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return ArgumentType.STRING;
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "(new name)"));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return new String[]{"(new item name)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,6 +7,8 @@ package net.shadow.client.feature.command.impl;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -18,16 +20,8 @@ public class Say extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return ArgumentType.STRING;
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "(message)"));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return new String[]{"(message)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -29,6 +29,7 @@ import net.minecraft.util.math.Vec3d;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
import net.shadow.client.feature.command.argument.IntegerArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.feature.gui.notifications.Notification;
|
import net.shadow.client.feature.gui.notifications.Notification;
|
||||||
|
@ -43,19 +44,9 @@ public class ServerCrash extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.NUMBER);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "rider", "book", "malformednbt", "move", "papertest", "chunkoob", "mvcrash", "stackoverflow", "playtime", "playtimeold", "maptool", "fawe", "lag"),
|
||||||
}
|
new PossibleArgument(ArgumentType.NUMBER, "(power)"));
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return new String[]{"rider", "book", "malformednbt", "move", "papertest", "chunkoob", "mvcrash", "stackoverflow", "playtime", "playtimeold", "maptool", "fawe", "lag"};
|
|
||||||
}
|
|
||||||
if (args.length == 2) {
|
|
||||||
return new String[]{"(power)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -153,7 +144,7 @@ public class ServerCrash extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
case "lag" -> {
|
case "lag" -> {
|
||||||
for(int i = 0; i < 3000000; i++){
|
for (int i = 0; i < 3000000; i++) {
|
||||||
client.player.networkHandler.sendPacket(new RequestCommandCompletionsC2SPacket(0, "/"));
|
client.player.networkHandler.sendPacket(new RequestCommandCompletionsC2SPacket(0, "/"));
|
||||||
}
|
}
|
||||||
Notification.create(2000, "Server Crash", Notification.Type.SUCCESS, "Sent Quick Lag Crash");
|
Notification.create(2000, "Server Crash", Notification.Type.SUCCESS, "Sent Quick Lag Crash");
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.StreamlineArgumentParser;
|
import net.shadow.client.feature.command.argument.StreamlineArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.nbt.NbtGroup;
|
import net.shadow.client.helper.nbt.NbtGroup;
|
||||||
import net.shadow.client.helper.nbt.NbtList;
|
import net.shadow.client.helper.nbt.NbtList;
|
||||||
|
@ -26,32 +27,20 @@ public class SpawnData extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
if (index == 0) {
|
||||||
return new String[]{"position", "velocity", "cursor"};
|
return new PossibleArgument(ArgumentType.STRING, "position", "velocity", "cursor");
|
||||||
}
|
}
|
||||||
if (args.length > 1) {
|
String s = args[0];
|
||||||
if (args[0].equals("position") || args[0].equals("velocity")) {
|
if (s.equalsIgnoreCase("position") || s.equalsIgnoreCase("velocity")) {
|
||||||
return switch (args.length) {
|
return switch (index) {
|
||||||
case 2 -> new String[]{"x"};
|
case 1 -> new PossibleArgument(ArgumentType.NUMBER, "x");
|
||||||
case 3 -> new String[]{"y"};
|
case 2 -> new PossibleArgument(ArgumentType.NUMBER, "y");
|
||||||
case 4 -> new String[]{"z"};
|
case 3 -> new PossibleArgument(ArgumentType.NUMBER, "z");
|
||||||
default -> new String[0];
|
default -> super.getSuggestionsWithType(index, args);
|
||||||
};
|
};
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return super.getSuggestions(fullCommand, args);
|
return super.getSuggestionsWithType(index, args);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
if (lookingAtArgIndex == 0) return ArgumentType.STRING;
|
|
||||||
if (lookingAtArgIndex == 1 || lookingAtArgIndex == 2 || lookingAtArgIndex == 3) {
|
|
||||||
if (args[0].equalsIgnoreCase("position") || args[0].equals("velocity")) {
|
|
||||||
return ArgumentType.NUMBER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,18 +16,12 @@ import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
|
|
||||||
public class StopServer extends Command {
|
public class StopServer extends Command {
|
||||||
public StopServer() {
|
public StopServer() {
|
||||||
super("StopServer", "Stops the server (real)", "stop");
|
super("StopServer", "Stops the server (real)", "stop");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
if (!ShadowMain.client.player.getAbilities().creativeMode) {
|
if (!ShadowMain.client.player.getAbilities().creativeMode) {
|
||||||
|
|
|
@ -8,7 +8,7 @@ import com.google.gson.Gson;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.helper.Texture;
|
import net.shadow.client.helper.Texture;
|
||||||
import net.shadow.client.helper.event.EventType;
|
import net.shadow.client.helper.event.EventType;
|
||||||
|
@ -177,22 +177,19 @@ public class Taco extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
if (args.length == 1) {
|
if (index == 0) {
|
||||||
return new String[]{"fps", "play", "toggle"};
|
return new PossibleArgument(ArgumentType.STRING, "fps", "play", "toggle");
|
||||||
} else if (args.length == 2) {
|
}
|
||||||
return switch (args[0].toLowerCase()) {
|
String a = args[0];
|
||||||
case "fps" -> new String[]{"(new fps)"};
|
if (index == 1) {
|
||||||
case "play" -> new String[]{"(path to gif file)"};
|
return switch (a.toLowerCase()) {
|
||||||
default -> new String[0];
|
case "fps" -> new PossibleArgument(ArgumentType.NUMBER, "(new fps)");
|
||||||
|
case "play" -> new PossibleArgument(ArgumentType.STRING, "(path to gif file)");
|
||||||
|
default -> super.getSuggestionsWithType(index, args);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return super.getSuggestions(fullCommand, args);
|
return super.getSuggestionsWithType(index, args);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING, ArgumentType.STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -5,20 +5,11 @@
|
||||||
package net.shadow.client.feature.command.impl;
|
package net.shadow.client.feature.command.impl;
|
||||||
|
|
||||||
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
|
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
|
||||||
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import net.minecraft.inventory.SimpleInventory;
|
import net.minecraft.inventory.SimpleInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.screen.GenericContainerScreenHandler;
|
import net.minecraft.screen.GenericContainerScreenHandler;
|
||||||
import net.minecraft.screen.ScreenHandler;
|
|
||||||
import net.minecraft.screen.ScreenHandlerType;
|
import net.minecraft.screen.ScreenHandlerType;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.shadow.client.ShadowMain;
|
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
|
||||||
import net.shadow.client.helper.nbt.NbtGroup;
|
|
||||||
import net.shadow.client.helper.nbt.NbtObject;
|
|
||||||
import net.shadow.client.helper.nbt.NbtProperty;
|
|
||||||
import net.shadow.client.helper.util.Utils;
|
import net.shadow.client.helper.util.Utils;
|
||||||
|
|
||||||
public class Test extends Command {
|
public class Test extends Command {
|
||||||
|
@ -26,11 +17,6 @@ public class Test extends Command {
|
||||||
super("Test", "REAL", "test");
|
super("Test", "REAL", "test");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(String[] args) {
|
public void onExecute(String[] args) {
|
||||||
Utils.TickManager.runOnNextRender(() -> {
|
Utils.TickManager.runOnNextRender(() -> {
|
||||||
|
|
|
@ -14,6 +14,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
import net.shadow.client.feature.command.argument.PlayerFromNameArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -25,16 +26,8 @@ public class TitleLag extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.PLAYER);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.PLAYER, Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new)));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return Objects.requireNonNull(ShadowMain.client.world).getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getGameProfile().getName()).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -6,6 +6,7 @@ package net.shadow.client.feature.command.impl;
|
||||||
|
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
import net.shadow.client.feature.module.Module;
|
import net.shadow.client.feature.module.Module;
|
||||||
|
@ -18,16 +19,8 @@ public class Toggle extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, ModuleRegistry.getModules().stream().map(Module::getName).toList().toArray(String[]::new)));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return ModuleRegistry.getModules().stream().map(Module::getName).toList().toArray(String[]::new);
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -9,6 +9,7 @@ import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.argument.DoubleArgumentParser;
|
import net.shadow.client.feature.command.argument.DoubleArgumentParser;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
import net.shadow.client.feature.command.exception.CommandException;
|
import net.shadow.client.feature.command.exception.CommandException;
|
||||||
|
|
||||||
|
@ -18,14 +19,8 @@ public class VClip extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.NUMBER);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.NUMBER, "(amount)"));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) return new String[]{"(height)"};
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -19,6 +19,7 @@ import net.minecraft.text.Text;
|
||||||
import net.shadow.client.ShadowMain;
|
import net.shadow.client.ShadowMain;
|
||||||
import net.shadow.client.feature.command.Command;
|
import net.shadow.client.feature.command.Command;
|
||||||
import net.shadow.client.feature.command.coloring.ArgumentType;
|
import net.shadow.client.feature.command.coloring.ArgumentType;
|
||||||
|
import net.shadow.client.feature.command.coloring.PossibleArgument;
|
||||||
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
import net.shadow.client.feature.command.coloring.StaticArgumentServer;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -32,16 +33,8 @@ public class ViewNbt extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArgumentType getArgumentType(String[] args, String lookingAtArg, int lookingAtArgIndex) {
|
public PossibleArgument getSuggestionsWithType(int index, String[] args) {
|
||||||
return StaticArgumentServer.serveFromStatic(lookingAtArgIndex, ArgumentType.STRING);
|
return StaticArgumentServer.serveFromStatic(index, new PossibleArgument(ArgumentType.STRING, "(flags)"));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String[] getSuggestions(String fullCommand, String[] args) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
return new String[]{"(flags)"};
|
|
||||||
}
|
|
||||||
return super.getSuggestions(fullCommand, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -134,6 +134,7 @@ public class ClickGUI extends Screen implements FastTickable {
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderIntern(MatrixStack matrices, int mouseX, int mouseY, float delta) {
|
void renderIntern(MatrixStack matrices, int mouseX, int mouseY, float delta) {
|
||||||
|
int mouseY1 = mouseY;
|
||||||
double wid = width / 2d;
|
double wid = width / 2d;
|
||||||
double hei = height / 2d;
|
double hei = height / 2d;
|
||||||
FontAdapter bigAssFr = FontRenderers.getCustomSize(70);
|
FontAdapter bigAssFr = FontRenderers.getCustomSize(70);
|
||||||
|
@ -154,25 +155,22 @@ public class ClickGUI extends Screen implements FastTickable {
|
||||||
matrices.translate((1 - intp) * width / 2, (1 - intp) * height / 2, 0);
|
matrices.translate((1 - intp) * width / 2, (1 - intp) * height / 2, 0);
|
||||||
matrices.scale((float) intp, (float) intp, 1);
|
matrices.scale((float) intp, (float) intp, 1);
|
||||||
matrices.translate(0, -trackedScroll, 0);
|
matrices.translate(0, -trackedScroll, 0);
|
||||||
mouseY += trackedScroll;
|
mouseY1 += trackedScroll;
|
||||||
List<Element> rev = new ArrayList<>(elements);
|
List<Element> rev = new ArrayList<>(elements);
|
||||||
Collections.reverse(rev);
|
Collections.reverse(rev);
|
||||||
for (Element element : rev) {
|
for (Element element : rev) {
|
||||||
element.render(matrices, mouseX, mouseY, trackedScroll);
|
element.render(matrices, mouseX, mouseY1, trackedScroll);
|
||||||
}
|
}
|
||||||
matrices.pop();
|
matrices.pop();
|
||||||
super.render(matrices, mouseX, mouseY, delta);
|
super.render(matrices, mouseX, mouseY1, delta);
|
||||||
if (desc != null) {
|
if (desc != null) {
|
||||||
|
|
||||||
// double width = FontRenderers.getNormal().getStringWidth(desc);
|
// double width = FontRenderers.getNormal().getStringWidth(desc);
|
||||||
double width = 0;
|
double width = 0;
|
||||||
List<String> text = Arrays.stream(desc.split("\n")).map(s -> s = s.trim()).toList();
|
List<String> text = Arrays.stream(desc.split("\n")).map(String::trim).toList();
|
||||||
for (String s : text) {
|
for (String s : text) {
|
||||||
width = Math.max(width, FontRenderers.getRenderer().getStringWidth(s));
|
width = Math.max(width, FontRenderers.getRenderer().getStringWidth(s));
|
||||||
}
|
}
|
||||||
// if (descX + width > ShadowMain.client.getWindow().getScaledWidth()) {
|
|
||||||
// descX -= (descX + width - ShadowMain.client.getWindow().getScaledWidth()) + 4;
|
|
||||||
// }
|
|
||||||
Vec2f root = Renderer.R2D.renderTooltip(matrices, descX, descY, width + 4, FontRenderers.getRenderer().getMarginHeight() + 4, tooltipColor);
|
Vec2f root = Renderer.R2D.renderTooltip(matrices, descX, descY, width + 4, FontRenderers.getRenderer().getMarginHeight() + 4, tooltipColor);
|
||||||
float yOffset = 2;
|
float yOffset = 2;
|
||||||
for (String s : text) {
|
for (String s : text) {
|
||||||
|
@ -186,35 +184,38 @@ public class ClickGUI extends Screen implements FastTickable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean mouseClicked(double mouseX, double mouseY, int button) {
|
public boolean mouseClicked(double mouseX, double mouseY, int button) {
|
||||||
mouseY += trackedScroll;
|
double mouseY1 = mouseY;
|
||||||
|
mouseY1 += trackedScroll;
|
||||||
for (Element element : new ArrayList<>(elements)) {
|
for (Element element : new ArrayList<>(elements)) {
|
||||||
if (element.clicked(mouseX, mouseY, button)) {
|
if (element.clicked(mouseX, mouseY1, button)) {
|
||||||
elements.remove(element);
|
elements.remove(element);
|
||||||
elements.add(0, element); // put to front when clicked
|
elements.add(0, element); // put to front when clicked
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.mouseClicked(mouseX, mouseY, button);
|
return super.mouseClicked(mouseX, mouseY1, button);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean mouseReleased(double mouseX, double mouseY, int button) {
|
public boolean mouseReleased(double mouseX, double mouseY, int button) {
|
||||||
mouseY += trackedScroll;
|
double mouseY1 = mouseY;
|
||||||
|
mouseY1 += trackedScroll;
|
||||||
for (Element element : elements) {
|
for (Element element : elements) {
|
||||||
element.released();
|
element.released();
|
||||||
}
|
}
|
||||||
return super.mouseReleased(mouseX, mouseY, button);
|
return super.mouseReleased(mouseX, mouseY1, button);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
|
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
|
||||||
mouseY += trackedScroll;
|
double mouseY1 = mouseY;
|
||||||
|
mouseY1 += trackedScroll;
|
||||||
for (Element element : elements) {
|
for (Element element : elements) {
|
||||||
if (element.dragged(mouseX, mouseY, deltaX, deltaY, button)) {
|
if (element.dragged(mouseX, mouseY1, deltaX, deltaY, button)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
|
return super.mouseDragged(mouseX, mouseY1, button, deltaX, deltaY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -137,7 +137,9 @@ public class CategoryDisplay extends Element {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(MatrixStack matrices, double mouseX, double mouseY, double scrollBeingUsed) {
|
public void render(MatrixStack matrices, double mouseX, double mouseY, double scrollBeingUsed) {
|
||||||
scroll(mouseX, mouseY, 0);
|
double mouseX1 = mouseX;
|
||||||
|
double mouseY1 = mouseY;
|
||||||
|
scroll(mouseX1, mouseY1, 0);
|
||||||
Theme theme = ThemeManager.getMainTheme();
|
Theme theme = ThemeManager.getMainTheme();
|
||||||
double openAnim = this.openAnim < 0.5
|
double openAnim = this.openAnim < 0.5
|
||||||
? (1 - sqrt(1 - pow(2 * this.openAnim, 2))) / 2
|
? (1 - sqrt(1 - pow(2 * this.openAnim, 2))) / 2
|
||||||
|
@ -181,16 +183,16 @@ public class CategoryDisplay extends Element {
|
||||||
double y = headerHeight();
|
double y = headerHeight();
|
||||||
matrices.push();
|
matrices.push();
|
||||||
matrices.translate(0, scroller.getScroll(), 0);
|
matrices.translate(0, scroller.getScroll(), 0);
|
||||||
if (!(mouseX >= x && mouseX < x + width && mouseY >= this.y + headerHeight() && mouseY < this.y + this.height - (modHeight != 0 ? r : 0))) {
|
if (!(mouseX1 >= x && mouseX1 < x + width && mouseY1 >= this.y + headerHeight() && mouseY1 < this.y + this.height - (modHeight != 0 ? r : 0))) {
|
||||||
mouseX = -1000;
|
mouseX1 = -1000;
|
||||||
mouseY = -1000;
|
mouseY1 = -1000;
|
||||||
}
|
}
|
||||||
for (ModuleDisplay moduleDisplay : getModules()) {
|
for (ModuleDisplay moduleDisplay : getModules()) {
|
||||||
moduleDisplay.setX(this.x);
|
moduleDisplay.setX(this.x);
|
||||||
moduleDisplay.setY(this.y + y);
|
moduleDisplay.setY(this.y + y);
|
||||||
if (moduleDisplay.getY() + scroller.getScroll() > this.y + height) continue;
|
if (moduleDisplay.getY() + scroller.getScroll() > this.y + height) continue;
|
||||||
|
|
||||||
moduleDisplay.render(matrices, mouseX, mouseY - scroller.getScroll(), scrollBeingUsed);
|
moduleDisplay.render(matrices, mouseX1, mouseY1 - scroller.getScroll(), scrollBeingUsed);
|
||||||
y += moduleDisplay.getHeight();
|
y += moduleDisplay.getHeight();
|
||||||
}
|
}
|
||||||
matrices.pop();
|
matrices.pop();
|
||||||
|
|
|
@ -49,15 +49,16 @@ public class KeybindEditor extends ConfigBase<DoubleSetting> {
|
||||||
// long lastUpdate = System.currentTimeMillis();
|
// long lastUpdate = System.currentTimeMillis();
|
||||||
@Override
|
@Override
|
||||||
public boolean keyPressed(int keycode, int modifiers) {
|
public boolean keyPressed(int keycode, int modifiers) {
|
||||||
|
int keycode1 = keycode;
|
||||||
if (selecting) {
|
if (selecting) {
|
||||||
// lastUpdate = System.currentTimeMillis();
|
// lastUpdate = System.currentTimeMillis();
|
||||||
cancelNextCharTyped = true;
|
cancelNextCharTyped = true;
|
||||||
if (keycode == GLFW.GLFW_KEY_ESCAPE) {
|
if (keycode1 == GLFW.GLFW_KEY_ESCAPE) {
|
||||||
selecting = false;
|
selecting = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (keycode == GLFW.GLFW_KEY_BACKSPACE) keycode = -1;
|
if (keycode1 == GLFW.GLFW_KEY_BACKSPACE) keycode1 = -1;
|
||||||
configValue.setValue(keycode + 0d);
|
configValue.setValue(keycode1 + 0d);
|
||||||
selecting = false;
|
selecting = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class AddonManagerScreen extends ClientScreen implements FastTickable {
|
public class AddonManagerScreen extends ClientScreen implements FastTickable {
|
||||||
Timer discoverTimer = new Timer();
|
final Timer discoverTimer = new Timer();
|
||||||
Scroller scroller = new Scroller(0);
|
final Scroller scroller = new Scroller(0);
|
||||||
double WIDGET_WIDTH = 600;
|
final double WIDGET_WIDTH = 600;
|
||||||
double WIDGET_HEIGHT = 300;
|
final double WIDGET_HEIGHT = 300;
|
||||||
List<AddonViewer> viewerList = new ArrayList<>();
|
final List<AddonViewer> viewerList = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFastTick() {
|
public void onFastTick() {
|
||||||
|
@ -107,10 +107,11 @@ public class AddonManagerScreen extends ClientScreen implements FastTickable {
|
||||||
class AddonViewer implements FastTickable {
|
class AddonViewer implements FastTickable {
|
||||||
static final double iconDimensions = 64;
|
static final double iconDimensions = 64;
|
||||||
static final double padding = 5;
|
static final double padding = 5;
|
||||||
Addon addon;
|
final Addon addon;
|
||||||
double width;
|
final double width;
|
||||||
|
final RoundButton reload;
|
||||||
double lastX, lastY;
|
double lastX, lastY;
|
||||||
RoundButton disable, reload;
|
RoundButton disable;
|
||||||
|
|
||||||
public AddonViewer(Addon addon, double width) {
|
public AddonViewer(Addon addon, double width) {
|
||||||
this.addon = addon;
|
this.addon = addon;
|
||||||
|
|
|
@ -48,13 +48,14 @@ public class BindScreen extends ClientScreen {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||||
|
int keyCodeCpy = keyCode;
|
||||||
if (closeAt != -1) {
|
if (closeAt != -1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (keyCode == GLFW.GLFW_KEY_ESCAPE) {
|
if (keyCodeCpy == GLFW.GLFW_KEY_ESCAPE) {
|
||||||
keyCode = -1;
|
keyCodeCpy = -1;
|
||||||
}
|
}
|
||||||
a.keybind.setValue((double) keyCode);
|
a.keybind.setValue((double) keyCodeCpy);
|
||||||
closeAt = System.currentTimeMillis() + 500;
|
closeAt = System.currentTimeMillis() + 500;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,7 +129,7 @@ public class ConsoleScreen extends ClientScreen implements FastTickable {
|
||||||
if (args.length > 0) {
|
if (args.length > 0) {
|
||||||
Command c = CommandRegistry.getByAlias(cmd);
|
Command c = CommandRegistry.getByAlias(cmd);
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
a = List.of(c.getSuggestions(command, args));
|
a = List.of(c.getSuggestionsWithType(args.length - 1, args).getSuggestions());
|
||||||
} else {
|
} else {
|
||||||
return new ArrayList<>(); // we have no command to ask -> we have no suggestions
|
return new ArrayList<>(); // we have no command to ask -> we have no suggestions
|
||||||
}
|
}
|
||||||
|
@ -184,6 +184,7 @@ public class ConsoleScreen extends ClientScreen implements FastTickable {
|
||||||
smoothScroll = Transitions.transition(smoothScroll, scroll, 7, 0);
|
smoothScroll = Transitions.transition(smoothScroll, scroll, 7, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("AssignmentToForLoopParameter")
|
||||||
@Override
|
@Override
|
||||||
public void renderInternal(MatrixStack stack, int mouseX, int mouseY, float delta) {
|
public void renderInternal(MatrixStack stack, int mouseX, int mouseY, float delta) {
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class QuickSelectScreen extends ClientScreen implements FastTickable {
|
public class SpotLightScreen extends ClientScreen implements FastTickable {
|
||||||
CommandTextField command;
|
CommandTextField command;
|
||||||
List<SuggestionsEntry> entries = new ArrayList<>();
|
List<SuggestionsEntry> entries = new ArrayList<>();
|
||||||
double anim = 0;
|
double anim = 0;
|
||||||
|
@ -95,6 +95,11 @@ public class QuickSelectScreen extends ClientScreen implements FastTickable {
|
||||||
this.entries = entries;
|
this.entries = entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldPause() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderInternal(MatrixStack stack, int mouseX, int mouseY, float delta) {
|
public void renderInternal(MatrixStack stack, int mouseX, int mouseY, float delta) {
|
||||||
double anim = ease(this.anim);
|
double anim = ease(this.anim);
|
||||||
|
@ -191,14 +196,15 @@ public class QuickSelectScreen extends ClientScreen implements FastTickable {
|
||||||
}
|
}
|
||||||
|
|
||||||
int makeSureInBounds(int index, int size) {
|
int makeSureInBounds(int index, int size) {
|
||||||
|
int indexCpy = index;
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
index %= size;
|
indexCpy %= size;
|
||||||
if (index < 0) {
|
if (indexCpy < 0) {
|
||||||
index = size + index;
|
indexCpy = size + indexCpy;
|
||||||
}
|
}
|
||||||
return index;
|
return indexCpy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -633,9 +639,7 @@ public class QuickSelectScreen extends ClientScreen implements FastTickable {
|
||||||
|
|
||||||
private void runAction() {
|
private void runAction() {
|
||||||
cursorChanged();
|
cursorChanged();
|
||||||
if (changeListener != null) {
|
changeListener.run();
|
||||||
changeListener.run();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private double textWidth() {
|
private double textWidth() {
|
||||||
|
@ -654,19 +658,14 @@ public class QuickSelectScreen extends ClientScreen implements FastTickable {
|
||||||
}
|
}
|
||||||
|
|
||||||
textStart = MathHelper.clamp(textStart, 0, Math.max(textWidth() - maxTextWidth(), 0));
|
textStart = MathHelper.clamp(textStart, 0, Math.max(textWidth() - maxTextWidth(), 0));
|
||||||
|
|
||||||
onCursorChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onCursorChanged() {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected double getTextWidth(int pos) {
|
protected double getTextWidth(int pos) {
|
||||||
if (pos < 0) {
|
if (pos < 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pos = Math.min(text.length(), pos);
|
int pos1 = Math.min(text.length(), pos);
|
||||||
return fa.getStringWidth(text.substring(0, pos)) + 1;
|
return fa.getStringWidth(text.substring(0, pos1)) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected double getCursorTextWidth(int offset) {
|
protected double getCursorTextWidth(int offset) {
|
||||||
|
@ -696,16 +695,9 @@ public class QuickSelectScreen extends ClientScreen implements FastTickable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFocused(boolean focused) {
|
public void setFocused(boolean focused) {
|
||||||
|
|
||||||
boolean wasJustFocused = focused && !this.focused;
|
|
||||||
|
|
||||||
this.focused = focused;
|
this.focused = focused;
|
||||||
|
|
||||||
resetSelection();
|
resetSelection();
|
||||||
|
|
||||||
if (wasJustFocused) {
|
|
||||||
onCursorChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCursorMax() {
|
public void setCursorMax() {
|
||||||
|
@ -775,7 +767,6 @@ public class QuickSelectScreen extends ClientScreen implements FastTickable {
|
||||||
|
|
||||||
public void render(MatrixStack stack) {
|
public void render(MatrixStack stack) {
|
||||||
double yCenter = y + height() / 2d;
|
double yCenter = y + height() / 2d;
|
||||||
double xCenter = x + wid / 2d;
|
|
||||||
double contentSize = height() - padUpDown * 2d;
|
double contentSize = height() - padUpDown * 2d;
|
||||||
if (selected) {
|
if (selected) {
|
||||||
Renderer.R2D.renderRoundedQuad(stack, new Color(40, 40, 40), x, y, x + wid, y + height(), 5, 20);
|
Renderer.R2D.renderRoundedQuad(stack, new Color(40, 40, 40), x, y, x + wid, y + height(), 5, 20);
|
|
@ -18,17 +18,17 @@ import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class StatsScreen extends ClientScreen implements FastTickable {
|
public class StatsScreen extends ClientScreen implements FastTickable {
|
||||||
static List<Float> packetIn = Util.make(() -> {
|
static final List<Float> packetIn = Util.make(() -> {
|
||||||
List<Float> f = new ArrayList<>();
|
List<Float> f = new ArrayList<>();
|
||||||
for (int i = 0; i < 100; i++) f.add(0f);
|
for (int i = 0; i < 100; i++) f.add(0f);
|
||||||
return f;
|
return f;
|
||||||
});
|
});
|
||||||
static List<Float> packetOut = Util.make(() -> {
|
static final List<Float> packetOut = Util.make(() -> {
|
||||||
List<Float> f = new ArrayList<>();
|
List<Float> f = new ArrayList<>();
|
||||||
for (int i = 0; i < 100; i++) f.add(0f);
|
for (int i = 0; i < 100; i++) f.add(0f);
|
||||||
return f;
|
return f;
|
||||||
});
|
});
|
||||||
Timer packetUpdater = new Timer();
|
final Timer packetUpdater = new Timer();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFastTick() {
|
public void onFastTick() {
|
||||||
|
|
|
@ -6,29 +6,14 @@ package net.shadow.client.feature.gui.screen;
|
||||||
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.shadow.client.feature.gui.FastTickable;
|
import net.shadow.client.feature.gui.FastTickable;
|
||||||
import net.shadow.client.feature.gui.widget.DataVisualizerWidget;
|
|
||||||
import net.shadow.client.helper.Timer;
|
|
||||||
import net.shadow.client.helper.render.Renderer;
|
import net.shadow.client.helper.render.Renderer;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
|
||||||
public class TestScreen extends ClientScreen implements FastTickable {
|
public class TestScreen extends ClientScreen implements FastTickable {
|
||||||
DataVisualizerWidget v;
|
|
||||||
Timer u = new Timer();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void init() {
|
|
||||||
super.init();
|
|
||||||
// v = new DataVisualizerWidget(Color.WHITE, true, 50, 1, height - 10, width - 10, 5, 5);
|
|
||||||
// addDrawableChild(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFastTick() {
|
public void onFastTick() {
|
||||||
// if (u.hasExpired(500)) {
|
|
||||||
// u.reset();
|
|
||||||
// v.addDataPoint(Math.random() * 10 - 5);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -22,11 +22,15 @@ import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class DataVisualizerWidget implements Element, Drawable, Selectable, FastTickable, DoesMSAA {
|
public class DataVisualizerWidget implements Element, Drawable, Selectable, FastTickable, DoesMSAA {
|
||||||
List<Double> data = new ArrayList<>();
|
final List<Double> data = new ArrayList<>();
|
||||||
int maxSize;
|
final int maxSize;
|
||||||
double width, height, x, y, minDataHeight;
|
final double width;
|
||||||
Color c;
|
final double height;
|
||||||
boolean showScale;
|
final double x;
|
||||||
|
final double y;
|
||||||
|
final double minDataHeight;
|
||||||
|
final Color c;
|
||||||
|
final boolean showScale;
|
||||||
|
|
||||||
public DataVisualizerWidget(Color dataColor, boolean showScale, int maxSize, double minDataScale, double height, double width, double x, double y, double... existingData) {
|
public DataVisualizerWidget(Color dataColor, boolean showScale, int maxSize, double minDataScale, double height, double width, double x, double y, double... existingData) {
|
||||||
for (double existingDatum : existingData) {
|
for (double existingDatum : existingData) {
|
||||||
|
|
|
@ -446,19 +446,14 @@ public class RoundTextFieldWidget implements Element, Drawable, Selectable, Does
|
||||||
}
|
}
|
||||||
|
|
||||||
textStart = MathHelper.clamp(textStart, 0, Math.max(textWidth() - maxTextWidth(), 0));
|
textStart = MathHelper.clamp(textStart, 0, Math.max(textWidth() - maxTextWidth(), 0));
|
||||||
|
|
||||||
onCursorChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onCursorChanged() {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected double getTextWidth(int pos) {
|
protected double getTextWidth(int pos) {
|
||||||
if (pos < 0) {
|
if (pos < 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pos = Math.min(text.length(), pos);
|
int pos1 = Math.min(text.length(), pos);
|
||||||
return FontRenderers.getRenderer().getStringWidth(text.substring(0, pos));
|
return FontRenderers.getRenderer().getStringWidth(text.substring(0, pos1));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected double getCursorTextWidth(int offset) {
|
protected double getCursorTextWidth(int offset) {
|
||||||
|
@ -489,15 +484,9 @@ public class RoundTextFieldWidget implements Element, Drawable, Selectable, Does
|
||||||
|
|
||||||
public void setFocused(boolean focused) {
|
public void setFocused(boolean focused) {
|
||||||
|
|
||||||
boolean wasJustFocused = focused && !this.focused;
|
|
||||||
|
|
||||||
this.focused = focused;
|
this.focused = focused;
|
||||||
|
|
||||||
resetSelection();
|
resetSelection();
|
||||||
|
|
||||||
if (wasJustFocused) {
|
|
||||||
onCursorChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCursorMax() {
|
public void setCursorMax() {
|
||||||
|
|
|
@ -90,6 +90,7 @@ import net.shadow.client.feature.module.impl.movement.Step;
|
||||||
import net.shadow.client.feature.module.impl.movement.Swing;
|
import net.shadow.client.feature.module.impl.movement.Swing;
|
||||||
import net.shadow.client.feature.module.impl.render.BlockHighlighting;
|
import net.shadow.client.feature.module.impl.render.BlockHighlighting;
|
||||||
import net.shadow.client.feature.module.impl.render.CaveMapper;
|
import net.shadow.client.feature.module.impl.render.CaveMapper;
|
||||||
|
import net.shadow.client.feature.module.impl.render.ChestHighlighter;
|
||||||
import net.shadow.client.feature.module.impl.render.ClickGUI;
|
import net.shadow.client.feature.module.impl.render.ClickGUI;
|
||||||
import net.shadow.client.feature.module.impl.render.ESP;
|
import net.shadow.client.feature.module.impl.render.ESP;
|
||||||
import net.shadow.client.feature.module.impl.render.FakeHacker;
|
import net.shadow.client.feature.module.impl.render.FakeHacker;
|
||||||
|
@ -301,9 +302,10 @@ public class ModuleRegistry {
|
||||||
vanillaModules.add(new InteractCrash());
|
vanillaModules.add(new InteractCrash());
|
||||||
vanillaModules.add(new FlightCrash());
|
vanillaModules.add(new FlightCrash());
|
||||||
vanillaModules.add(new ClickTP());
|
vanillaModules.add(new ClickTP());
|
||||||
vanillaModules.add(new DauntedAutoClaim()); //it was hurting my finger
|
vanillaModules.add(new ChestHighlighter());
|
||||||
|
vanillaModules.add(new DauntedAutoClaim());
|
||||||
|
|
||||||
rebuildSharedModuleList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Module> getModules() {
|
public static List<Module> getModules() {
|
||||||
|
|
|
@ -128,7 +128,8 @@ public class Killaura extends Module {
|
||||||
p = new Vec3d(p.x, 0, p.z).normalize().multiply(1.5);
|
p = new Vec3d(p.x, 0, p.z).normalize().multiply(1.5);
|
||||||
updatePos = e.getPos().add(p.multiply(-1));
|
updatePos = e.getPos().add(p.multiply(-1));
|
||||||
}
|
}
|
||||||
case TP -> updatePos = new Vec3d(e.getX() + (Math.random() * 4 - 2), e.getY(), e.getZ() + (Math.random() * 4 - 2));
|
case TP ->
|
||||||
|
updatePos = new Vec3d(e.getX() + (Math.random() * 4 - 2), e.getY(), e.getZ() + (Math.random() * 4 - 2));
|
||||||
case Circle -> {
|
case Circle -> {
|
||||||
circleProg += 20;
|
circleProg += 20;
|
||||||
circleProg %= 360;
|
circleProg %= 360;
|
||||||
|
@ -336,4 +337,3 @@ public class Killaura extends Module {
|
||||||
TP, Behind, Circle
|
TP, Behind, Circle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ import java.util.List;
|
||||||
|
|
||||||
public class ReverseKnockback extends Module {
|
public class ReverseKnockback extends Module {
|
||||||
|
|
||||||
List<PlayerMoveC2SPacket> dontRepeat = new ArrayList<>();
|
final List<PlayerMoveC2SPacket> dontRepeat = new ArrayList<>();
|
||||||
|
|
||||||
public ReverseKnockback() {
|
public ReverseKnockback() {
|
||||||
super("ReverseKnockback", "Reverse the knockback you deal", ModuleType.MISC);
|
super("ReverseKnockback", "Reverse the knockback you deal", ModuleType.MISC);
|
||||||
|
|
|
@ -52,7 +52,6 @@ public class InteractCrash extends Module {
|
||||||
case Entity -> {
|
case Entity -> {
|
||||||
Entity target;
|
Entity target;
|
||||||
if (!(client.crosshairTarget instanceof EntityHitResult)) {
|
if (!(client.crosshairTarget instanceof EntityHitResult)) {
|
||||||
target = null;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
target = ((EntityHitResult) client.crosshairTarget).getEntity();
|
target = ((EntityHitResult) client.crosshairTarget).getEntity();
|
||||||
|
|
|
@ -81,7 +81,7 @@ public class LoominaCrash extends Module {
|
||||||
void simplePacketMove(int slotId) {
|
void simplePacketMove(int slotId) {
|
||||||
//System.out.println(client.player.currentScreenHandler.getSlot(slotId).getStack().getName().getString());
|
//System.out.println(client.player.currentScreenHandler.getSlot(slotId).getStack().getName().getString());
|
||||||
ScreenHandler screenHandler = client.player.currentScreenHandler;
|
ScreenHandler screenHandler = client.player.currentScreenHandler;
|
||||||
Int2ObjectOpenHashMap<ItemStack> int2ObjectMap = new Int2ObjectOpenHashMap<ItemStack>();
|
Int2ObjectOpenHashMap<ItemStack> int2ObjectMap = new Int2ObjectOpenHashMap<>();
|
||||||
int2ObjectMap.put(slotId, client.player.currentScreenHandler.getSlot(slotId).getStack().copy());
|
int2ObjectMap.put(slotId, client.player.currentScreenHandler.getSlot(slotId).getStack().copy());
|
||||||
client.player.networkHandler.sendPacket(new ClickSlotC2SPacket(client.player.currentScreenHandler.syncId, screenHandler.getRevision(), slotId, 0, SlotActionType.PICKUP, client.player.currentScreenHandler.getSlot(slotId).getStack().copy(), int2ObjectMap));
|
client.player.networkHandler.sendPacket(new ClickSlotC2SPacket(client.player.currentScreenHandler.syncId, screenHandler.getRevision(), slotId, 0, SlotActionType.PICKUP, client.player.currentScreenHandler.getSlot(slotId).getStack().copy(), int2ObjectMap));
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@ public class BeaconSpoofer extends Module {
|
||||||
case "SATURATION" -> StatusEffects.SATURATION;
|
case "SATURATION" -> StatusEffects.SATURATION;
|
||||||
case "SLOWNESS" -> StatusEffects.SLOWNESS;
|
case "SLOWNESS" -> StatusEffects.SLOWNESS;
|
||||||
case "SLOW FALLING" -> StatusEffects.SLOW_FALLING;
|
case "SLOW FALLING" -> StatusEffects.SLOW_FALLING;
|
||||||
case "SPEED" -> StatusEffects.SPEED;
|
|
||||||
case "STRENGTH" -> StatusEffects.STRENGTH;
|
case "STRENGTH" -> StatusEffects.STRENGTH;
|
||||||
case "UNLUCK" -> StatusEffects.UNLUCK;
|
case "UNLUCK" -> StatusEffects.UNLUCK;
|
||||||
case "WATER BREATHING" -> StatusEffects.WATER_BREATHING;
|
case "WATER BREATHING" -> StatusEffects.WATER_BREATHING;
|
||||||
|
|
|
@ -69,8 +69,8 @@ public class AntiCrash extends Module {
|
||||||
|
|
||||||
public AntiCrash() {
|
public AntiCrash() {
|
||||||
super("AntiCrash", "Prevents you from being fucked", ModuleType.MISC);
|
super("AntiCrash", "Prevents you from being fucked", ModuleType.MISC);
|
||||||
nameMax.showIf(() -> capNames.getValue());
|
nameMax.showIf(capNames::getValue);
|
||||||
particleMax.showIf(() -> capParticles.getValue());
|
particleMax.showIf(capParticles::getValue);
|
||||||
Events.registerEventHandler(EventType.PACKET_RECEIVE, this::handlePacketEvent);
|
Events.registerEventHandler(EventType.PACKET_RECEIVE, this::handlePacketEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
public class Test extends Module {
|
public class Test extends Module {
|
||||||
static final Block searchTerm = Blocks.NETHER_PORTAL;
|
static final Block searchTerm = Blocks.NETHER_PORTAL;
|
||||||
CopyOnWriteArrayList<BlockPos> discovered = new CopyOnWriteArrayList<>();
|
final CopyOnWriteArrayList<BlockPos> discovered = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
public Test() {
|
public Test() {
|
||||||
super("Test", "Testing stuff with the client, can be ignored", ModuleType.MISC);
|
super("Test", "Testing stuff with the client, can be ignored", ModuleType.MISC);
|
||||||
|
@ -44,11 +44,6 @@ public class Test extends Module {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@EventListener(type=EventType.PACKET_SEND)
|
|
||||||
void onPacketSend(PacketEvent pe){
|
|
||||||
if(this.isEnabled()) System.out.println("-> " + pe.getPacket().toString());
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enable() {
|
public void enable() {
|
||||||
|
|
||||||
|
@ -69,9 +64,6 @@ public class Test extends Module {
|
||||||
for (BlockPos bruh : discovered) {
|
for (BlockPos bruh : discovered) {
|
||||||
Renderer.R3D.renderEdged(matrices, Vec3d.of(bruh), new Vec3d(1, 1, 1), Renderer.Util.modify(Utils.getCurrentRGB(), -1, -1, -1, 100).darker(), Renderer.Util.modify(Utils.getCurrentRGB(), -1, -1, -1, 255));
|
Renderer.R3D.renderEdged(matrices, Vec3d.of(bruh), new Vec3d(1, 1, 1), Renderer.Util.modify(Utils.getCurrentRGB(), -1, -1, -1, 100).darker(), Renderer.Util.modify(Utils.getCurrentRGB(), -1, -1, -1, 255));
|
||||||
}
|
}
|
||||||
// for (BlockPos bruh : bruhs.pop()) {
|
|
||||||
// Renderer.R3D.renderEdged(matrices, Vec3d.of(bruh), new Vec3d(1,1,1), Renderer.Util.modify(Utils.getCurrentRGB(), -1, -1, -1, 100).darker(), Renderer.Util.modify(Utils.getCurrentRGB(), -1, -1, -1, 255));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -81,9 +81,7 @@ public class ClickTP extends Module {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (mode.getValue()) {
|
switch (mode.getValue()) {
|
||||||
case Normal -> {
|
case Normal -> client.player.updatePosition(dest.getX(), dest.getY(), dest.getZ());
|
||||||
client.player.updatePosition(dest.getX(), dest.getY(), dest.getZ());
|
|
||||||
}
|
|
||||||
|
|
||||||
case Split -> {
|
case Split -> {
|
||||||
client.player.jump();
|
client.player.jump();
|
||||||
|
@ -101,53 +99,49 @@ public class ClickTP extends Module {
|
||||||
player.updatePosition(dest.getX(), dest.getY(), dest.getZ());
|
player.updatePosition(dest.getX(), dest.getY(), dest.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
case Tween -> {
|
case Tween -> new Thread(() -> {
|
||||||
new Thread(() -> {
|
int rdd = lengthTo(ray.getBlockPos());
|
||||||
int rdd = lengthTo(ray.getBlockPos());
|
BlockPos destt = new BlockPos(blockHitResult.getBlockPos());
|
||||||
BlockPos destt = new BlockPos(blockHitResult.getBlockPos());
|
client.player.jump();
|
||||||
client.player.jump();
|
ClientPlayerEntity player = client.player;
|
||||||
ClientPlayerEntity player = client.player;
|
Vec3d playerpos = player.getPos();
|
||||||
Vec3d playerpos = player.getPos();
|
double xn = destt.getX() - playerpos.x;
|
||||||
double xn = destt.getX() - playerpos.x;
|
double yn = destt.getY() - playerpos.y;
|
||||||
double yn = destt.getY() - playerpos.y;
|
double zn = destt.getZ() - playerpos.z;
|
||||||
double zn = destt.getZ() - playerpos.z;
|
double x = xn / rdd;
|
||||||
double x = xn / rdd;
|
double y = yn / rdd;
|
||||||
double y = yn / rdd;
|
double z = zn / rdd;
|
||||||
double z = zn / rdd;
|
for (int i = 0; i < rdd; i++) {
|
||||||
for (int i = 0; i < rdd; i++) {
|
client.player.updatePosition(player.getX() + x, player.getY() + y, player.getZ() + z);
|
||||||
client.player.updatePosition(player.getX() + x, player.getY() + y, player.getZ() + z);
|
try {
|
||||||
try {
|
Thread.sleep(7);
|
||||||
Thread.sleep(7);
|
} catch (Exception ignored) {
|
||||||
} catch (Exception ignored) {
|
|
||||||
}
|
|
||||||
client.player.setVelocity(0, 0, 0);
|
|
||||||
}
|
}
|
||||||
}).start();
|
client.player.setVelocity(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
}).start();
|
||||||
|
|
||||||
case Experimental -> {
|
case Experimental -> new Thread(() -> {
|
||||||
new Thread(() -> {
|
int rdd = lengthTo(ray.getBlockPos());
|
||||||
int rdd = lengthTo(ray.getBlockPos());
|
BlockPos destt = new BlockPos(blockHitResult.getBlockPos());
|
||||||
BlockPos destt = new BlockPos(blockHitResult.getBlockPos());
|
client.player.jump();
|
||||||
client.player.jump();
|
ClientPlayerEntity player = client.player;
|
||||||
ClientPlayerEntity player = client.player;
|
Vec3d playerpos = player.getPos();
|
||||||
Vec3d playerpos = player.getPos();
|
double xn = destt.getX() - playerpos.x;
|
||||||
double xn = destt.getX() - playerpos.x;
|
double yn = destt.getY() - playerpos.y;
|
||||||
double yn = destt.getY() - playerpos.y;
|
double zn = destt.getZ() - playerpos.z;
|
||||||
double zn = destt.getZ() - playerpos.z;
|
double x = xn / rdd;
|
||||||
double x = xn / rdd;
|
double y = yn / rdd;
|
||||||
double y = yn / rdd;
|
double z = zn / rdd;
|
||||||
double z = zn / rdd;
|
for (int i = 0; i < rdd; i++) {
|
||||||
for (int i = 0; i < rdd; i++) {
|
client.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(player.getX() + x, player.getY() + y, player.getZ() + z, true));
|
||||||
client.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(player.getX() + x, player.getY() + y, player.getZ() + z, true));
|
try {
|
||||||
try {
|
Thread.sleep(10);
|
||||||
Thread.sleep(10);
|
} catch (Exception ignored) {
|
||||||
} catch (Exception ignored) {
|
|
||||||
}
|
|
||||||
client.player.setVelocity(0, 0, 0);
|
|
||||||
}
|
}
|
||||||
}).start();
|
client.player.setVelocity(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
}).start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,8 +33,10 @@ public class Jesus extends Module {
|
||||||
if (ShadowMain.client.player.isWet()) {
|
if (ShadowMain.client.player.isWet()) {
|
||||||
switch (mode.getValue()) {
|
switch (mode.getValue()) {
|
||||||
case Jump -> Objects.requireNonNull(client.player).jump();
|
case Jump -> Objects.requireNonNull(client.player).jump();
|
||||||
case Velocity -> Objects.requireNonNull(client.player).setVelocity(client.player.getVelocity().x, velStrength.getValue(), client.player.getVelocity().z);
|
case Velocity ->
|
||||||
case Legit -> Objects.requireNonNull(client.player).addVelocity(0, 0.03999999910593033, 0); // LivingEntity:1978, vanilla velocity
|
Objects.requireNonNull(client.player).setVelocity(client.player.getVelocity().x, velStrength.getValue(), client.player.getVelocity().z);
|
||||||
|
case Legit ->
|
||||||
|
Objects.requireNonNull(client.player).addVelocity(0, 0.03999999910593033, 0); // LivingEntity:1978, vanilla velocity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,4 +70,3 @@ public class Jesus extends Module {
|
||||||
Solid, Jump, Velocity, Legit
|
Solid, Jump, Velocity, Legit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,8 @@ public class LongJump extends Module {
|
||||||
double scaled = xz.getValue() / 5;
|
double scaled = xz.getValue() / 5;
|
||||||
return switch (focus.getValue()) {
|
return switch (focus.getValue()) {
|
||||||
case Direction -> new Vec3d(-MathHelper.sin(f) * scaled, 0.0D, MathHelper.cos(f) * scaled);
|
case Direction -> new Vec3d(-MathHelper.sin(f) * scaled, 0.0D, MathHelper.cos(f) * scaled);
|
||||||
case Velocity -> new Vec3d(ShadowMain.client.player.getVelocity().normalize().x * scaled, 0.0D, ShadowMain.client.player.getVelocity().normalize().z * scaled);
|
case Velocity ->
|
||||||
|
new Vec3d(ShadowMain.client.player.getVelocity().normalize().x * scaled, 0.0D, ShadowMain.client.player.getVelocity().normalize().z * scaled);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,4 +102,3 @@ public class LongJump extends Module {
|
||||||
Velocity, Direction
|
Velocity, Direction
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ public class Speed extends Module {
|
||||||
static float fovEffectScal = 0;
|
static float fovEffectScal = 0;
|
||||||
static int ticksonground = 0;
|
static int ticksonground = 0;
|
||||||
static int ticksjustsneaking = 0;
|
static int ticksjustsneaking = 0;
|
||||||
final EnumSetting<Mode> mode = this.config.create(new EnumSetting.Builder<Mode>(Mode.OnGround).name("Mode").description("How to apply the speed").get());
|
final EnumSetting<Mode> mode = this.config.create(new EnumSetting.Builder<>(Mode.OnGround).name("Mode").description("How to apply the speed").get());
|
||||||
final DoubleSetting speed = this.config.create(new DoubleSetting.Builder(20).min(5).max(50).name("Speed").description("How fast to go").get());
|
final DoubleSetting speed = this.config.create(new DoubleSetting.Builder(20).min(5).max(50).name("Speed").description("How fast to go").get());
|
||||||
|
|
||||||
public Speed() {
|
public Speed() {
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Shadow client, 0x150, Saturn5VFive 2022. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.shadow.client.feature.module.impl.render;
|
||||||
|
|
||||||
|
import net.minecraft.block.ChestBlock;
|
||||||
|
import net.minecraft.block.entity.ChestBlockEntity;
|
||||||
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.shadow.client.feature.module.Module;
|
||||||
|
import net.shadow.client.feature.module.ModuleType;
|
||||||
|
import net.shadow.client.helper.event.EventListener;
|
||||||
|
import net.shadow.client.helper.event.EventType;
|
||||||
|
import net.shadow.client.helper.event.Events;
|
||||||
|
import net.shadow.client.helper.event.events.BlockEntityRenderEvent;
|
||||||
|
import net.shadow.client.helper.render.Renderer;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
|
public class ChestHighlighter extends Module {
|
||||||
|
List<BlockPos> positions = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
|
public ChestHighlighter() {
|
||||||
|
super("ChestHighlighter", "No description", ModuleType.RENDER);
|
||||||
|
Events.registerEventHandlerClass(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void addIfNotExisting(BlockPos p) {
|
||||||
|
if (positions.stream().noneMatch(blockPos -> blockPos.equals(p))) positions.add(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove(BlockPos p) {
|
||||||
|
positions.removeIf(blockPos -> blockPos.equals(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventListener(type = EventType.BLOCK_ENTITY_RENDER)
|
||||||
|
void r(BlockEntityRenderEvent be) {
|
||||||
|
if (!this.isEnabled()) return;
|
||||||
|
if (be.getBlockEntity() instanceof ChestBlockEntity) {
|
||||||
|
addIfNotExisting(be.getBlockEntity().getPos());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
positions.removeIf(blockPos -> !(client.world.getBlockState(blockPos).getBlock() instanceof ChestBlock));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enable() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disable() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getContext() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWorldRender(MatrixStack matrices) {
|
||||||
|
for (BlockPos position : positions) {
|
||||||
|
Renderer.R3D.renderFadingBlock(Color.WHITE, Color.RED, Vec3d.of(position), new Vec3d(1, 1, 1), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onHudRender() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -129,9 +129,11 @@ public class ESP extends Module {
|
||||||
Color c = Utils.getCurrentRGB();
|
Color c = Utils.getCurrentRGB();
|
||||||
Vec3d eSource = Utils.getInterpolatedEntityPosition(entity);
|
Vec3d eSource = Utils.getInterpolatedEntityPosition(entity);
|
||||||
switch (outlineMode.getValue()) {
|
switch (outlineMode.getValue()) {
|
||||||
case Filled -> Renderer.R3D.renderFilled(eSource.subtract(new Vec3d(entity.getWidth(), 0, entity.getWidth()).multiply(0.5)), new Vec3d(entity.getWidth(), entity.getHeight(), entity.getWidth()), Renderer.Util.modify(c, -1, -1, -1, 130), matrices);
|
case Filled ->
|
||||||
|
Renderer.R3D.renderFilled(eSource.subtract(new Vec3d(entity.getWidth(), 0, entity.getWidth()).multiply(0.5)), new Vec3d(entity.getWidth(), entity.getHeight(), entity.getWidth()), Renderer.Util.modify(c, -1, -1, -1, 130), matrices);
|
||||||
case Rect -> renderOutline(entity, c, matrices);
|
case Rect -> renderOutline(entity, c, matrices);
|
||||||
case Outline -> Renderer.R3D.renderOutline(eSource.subtract(new Vec3d(entity.getWidth(), 0, entity.getWidth()).multiply(0.5)), new Vec3d(entity.getWidth(), entity.getHeight(), entity.getWidth()), Renderer.Util.modify(c, -1, -1, -1, 130), matrices);
|
case Outline ->
|
||||||
|
Renderer.R3D.renderOutline(eSource.subtract(new Vec3d(entity.getWidth(), 0, entity.getWidth()).multiply(0.5)), new Vec3d(entity.getWidth(), entity.getHeight(), entity.getWidth()), Renderer.Util.modify(c, -1, -1, -1, 130), matrices);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,4 +192,3 @@ public class ESP extends Module {
|
||||||
Filled, Rect, Outline, Model
|
Filled, Rect, Outline, Model
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class Hud extends Module {
|
||||||
// final List<ModuleEntry> moduleList = new ArrayList<>();
|
// final List<ModuleEntry> moduleList = new ArrayList<>();
|
||||||
final Timer tpsUpdateTimer = new Timer();
|
final Timer tpsUpdateTimer = new Timer();
|
||||||
final List<Double> last5SecondTpsAverage = new ArrayList<>();
|
final List<Double> last5SecondTpsAverage = new ArrayList<>();
|
||||||
Map<Module, ModuleEntry> entryList = new ConcurrentHashMap<>();
|
final Map<Module, ModuleEntry> entryList = new ConcurrentHashMap<>();
|
||||||
long lastTimePacketReceived;
|
long lastTimePacketReceived;
|
||||||
double rNoConnectionPosY = -10d;
|
double rNoConnectionPosY = -10d;
|
||||||
Notification serverNotResponding = null;
|
Notification serverNotResponding = null;
|
||||||
|
@ -117,12 +117,6 @@ public class Hud extends Module {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void postInit() {
|
|
||||||
|
|
||||||
super.postInit();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHudRender() {
|
public void onHudRender() {
|
||||||
if (ShadowMain.client.getNetworkHandler() == null) {
|
if (ShadowMain.client.getNetworkHandler() == null) {
|
||||||
|
|
|
@ -57,11 +57,11 @@ public class ShowTntPrime extends Module {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void semicircle(MatrixStack stack, Color c, double x, double y, double rad, double width, double segments, double toRad) {
|
static void semicircle(MatrixStack stack, Color c, double x, double y, double rad, double width, double segments, double toRad) {
|
||||||
toRad = MathHelper.clamp(toRad, 0, 360);
|
double toRad1 = MathHelper.clamp(toRad, 0, 360);
|
||||||
stack.push();
|
stack.push();
|
||||||
stack.translate(x, y, 0);
|
stack.translate(x, y, 0);
|
||||||
// stack.multiply(new Quaternion(0, 0, (System.currentTimeMillis() % 2000) / 2000f * 360f, true));
|
// stack.multiply(new Quaternion(0, 0, (System.currentTimeMillis() % 2000) / 2000f * 360f, true));
|
||||||
segments = MathHelper.clamp(segments, 2, 90);
|
double segments1 = MathHelper.clamp(segments, 2, 90);
|
||||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||||
int color = c.getRGB();
|
int color = c.getRGB();
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ public class ShowTntPrime extends Module {
|
||||||
RenderSystem.disableTexture();
|
RenderSystem.disableTexture();
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
||||||
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR);
|
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR);
|
||||||
for (double r = 0; r < toRad; r += Math.min(360 / segments, (toRad - r))) {
|
for (double r = 0; r < toRad1; r += Math.min(360 / segments1, (toRad1 - r))) {
|
||||||
double rad1 = Math.toRadians(r);
|
double rad1 = Math.toRadians(r);
|
||||||
double sin = Math.sin(rad1);
|
double sin = Math.sin(rad1);
|
||||||
double cos = Math.cos(rad1);
|
double cos = Math.cos(rad1);
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
package net.shadow.client.feature.module.impl.render;
|
package net.shadow.client.feature.module.impl.render;
|
||||||
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.shadow.client.feature.gui.screen.QuickSelectScreen;
|
import net.shadow.client.feature.gui.screen.SpotLightScreen;
|
||||||
import net.shadow.client.feature.module.Module;
|
import net.shadow.client.feature.module.Module;
|
||||||
import net.shadow.client.feature.module.ModuleType;
|
import net.shadow.client.feature.module.ModuleType;
|
||||||
import net.shadow.client.feature.module.NoNotificationDefault;
|
import net.shadow.client.feature.module.NoNotificationDefault;
|
||||||
|
@ -18,7 +18,7 @@ public class Spotlight extends Module {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
client.setScreen(new QuickSelectScreen());
|
client.setScreen(new SpotLightScreen());
|
||||||
setEnabled(false);
|
setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class TabGui extends Module {
|
||||||
TabPane modules = new TabPane();
|
TabPane modules = new TabPane();
|
||||||
for (Module module : ModuleRegistry.getModules()) {
|
for (Module module : ModuleRegistry.getModules()) {
|
||||||
if (module.getModuleType() != value) continue;
|
if (module.getModuleType() != value) continue;
|
||||||
GuiEntry ge1 = new GuiEntry(module.getName(), module::isEnabled, module::toggle, () -> tabStack.pop(), FontRenderers.getRenderer().getStringWidth(module.getName()), FontRenderers.getRenderer().getMarginHeight());
|
GuiEntry ge1 = new GuiEntry(module.getName(), module::isEnabled, module::toggle, tabStack::pop, FontRenderers.getRenderer().getStringWidth(module.getName()), FontRenderers.getRenderer().getMarginHeight());
|
||||||
modules.entries.add(ge1);
|
modules.entries.add(ge1);
|
||||||
}
|
}
|
||||||
if (modules.entries.isEmpty()) return;
|
if (modules.entries.isEmpty()) return;
|
||||||
|
@ -70,11 +70,12 @@ public class TabGui extends Module {
|
||||||
}
|
}
|
||||||
|
|
||||||
int makeSureInBounds(int index, int size) {
|
int makeSureInBounds(int index, int size) {
|
||||||
index %= size;
|
int index1 = index;
|
||||||
if (index < 0) {
|
index1 %= size;
|
||||||
index = size + index;
|
if (index1 < 0) {
|
||||||
|
index1 = size + index1;
|
||||||
}
|
}
|
||||||
return index;
|
return index1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleMouse(KeyboardEvent me) {
|
void handleMouse(KeyboardEvent me) {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class AddonClassLoader extends URLClassLoader {
|
public class AddonClassLoader extends URLClassLoader {
|
||||||
Map<String, URL> resourceMap = new ConcurrentHashMap<>();
|
final Map<String, URL> resourceMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public AddonClassLoader(ClassLoader parent) {
|
public AddonClassLoader(ClassLoader parent) {
|
||||||
super(new URL[0], parent);
|
super(new URL[0], parent);
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class NbtFormatter implements NbtElementVisitor {
|
||||||
map.put("{}.entities.[].{}", Lists.newArrayList("blockPos", "pos"));
|
map.put("{}.entities.[].{}", Lists.newArrayList("blockPos", "pos"));
|
||||||
});
|
});
|
||||||
private static final Set<String> IGNORED_PATHS = Sets.newHashSet("{}.size.[]", "{}.data.[].{}", "{}.palette.[].{}", "{}.entities.[].{}");
|
private static final Set<String> IGNORED_PATHS = Sets.newHashSet("{}.size.[]", "{}.data.[].{}", "{}.palette.[].{}", "{}.entities.[].{}");
|
||||||
private static final Pattern SIMPLE_NAME = Pattern.compile("[A-Za-z0-9._+-]+");
|
private static final Pattern SIMPLE_NAME = Pattern.compile("[A-Za-z\\d._+-]+");
|
||||||
private static final String KEY_VALUE_SEPARATOR = String.valueOf(':');
|
private static final String KEY_VALUE_SEPARATOR = String.valueOf(':');
|
||||||
private static final String ENTRY_SEPARATOR = String.valueOf(',');
|
private static final String ENTRY_SEPARATOR = String.valueOf(',');
|
||||||
private static final int NAME_COLOR = 0x55FFFF;
|
private static final int NAME_COLOR = 0x55FFFF;
|
||||||
|
@ -295,4 +295,4 @@ public class NbtFormatter implements NbtElementVisitor {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class Events {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||||
public static boolean fireEvent(EventType event, Event argument) {
|
public static boolean fireEvent(EventType event, Event argument) {
|
||||||
for (ListenerEntry entry : entries) {
|
for (ListenerEntry entry : entries) {
|
||||||
if (entry.type == event) {
|
if (entry.type == event) {
|
||||||
|
|
|
@ -39,13 +39,14 @@ public class FontRenderers {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BruhAdapter getCustomSize(int size) {
|
public static BruhAdapter getCustomSize(int size) {
|
||||||
size *= 2;
|
int size1 = size;
|
||||||
|
size1 *= 2;
|
||||||
for (BruhAdapter fontRenderer : fontRenderers) {
|
for (BruhAdapter fontRenderer : fontRenderers) {
|
||||||
if (fontRenderer.getSize() == size) {
|
if (fontRenderer.getSize() == size1) {
|
||||||
return fontRenderer;
|
return fontRenderer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int fsize = size;
|
int fsize = size1;
|
||||||
try {
|
try {
|
||||||
BruhAdapter bruhAdapter = (new BruhAdapter(new FontRenderer(Font.createFont(Font.TRUETYPE_FONT, Objects.requireNonNull(FontRenderers.class.getClassLoader().getResourceAsStream("Font.ttf"))).deriveFont(Font.PLAIN, fsize), fsize)));
|
BruhAdapter bruhAdapter = (new BruhAdapter(new FontRenderer(Font.createFont(Font.TRUETYPE_FONT, Objects.requireNonNull(FontRenderers.class.getClassLoader().getResourceAsStream("Font.ttf"))).deriveFont(Font.PLAIN, fsize), fsize)));
|
||||||
fontRenderers.add(bruhAdapter);
|
fontRenderers.add(bruhAdapter);
|
||||||
|
|
|
@ -21,25 +21,27 @@ public class BruhAdapter implements FontAdapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawString(MatrixStack matrices, String text, float x, float y, int color) {
|
public void drawString(MatrixStack matrices, String text, float x, float y, int color) {
|
||||||
if ((color & 0xfc000000) == 0) {
|
int color1 = color;
|
||||||
color |= 0xff000000;
|
if ((color1 & 0xfc000000) == 0) {
|
||||||
|
color1 |= 0xff000000;
|
||||||
}
|
}
|
||||||
float alpha = (float) (color >> 24 & 255) / 255.0F;
|
float alpha = (float) (color1 >> 24 & 255) / 255.0F;
|
||||||
float r = (float) (color >> 16 & 255) / 255.0F;
|
float r = (float) (color1 >> 16 & 255) / 255.0F;
|
||||||
float g = (float) (color >> 8 & 255) / 255.0F;
|
float g = (float) (color1 >> 8 & 255) / 255.0F;
|
||||||
float b = (float) (color & 255) / 255.0F;
|
float b = (float) (color1 & 255) / 255.0F;
|
||||||
renderer.drawString(matrices, text, x, y, r, g, b, alpha);
|
renderer.drawString(matrices, text, x, y, r, g, b, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawString(MatrixStack matrices, String text, double x, double y, int color) {
|
public void drawString(MatrixStack matrices, String text, double x, double y, int color) {
|
||||||
if ((color & 0xfc000000) == 0) {
|
int color1 = color;
|
||||||
color |= 0xff000000;
|
if ((color1 & 0xfc000000) == 0) {
|
||||||
|
color1 |= 0xff000000;
|
||||||
}
|
}
|
||||||
float alpha = (float) (color >> 24 & 255) / 255.0F;
|
float alpha = (float) (color1 >> 24 & 255) / 255.0F;
|
||||||
float r = (float) (color >> 16 & 255) / 255.0F;
|
float r = (float) (color1 >> 16 & 255) / 255.0F;
|
||||||
float g = (float) (color >> 8 & 255) / 255.0F;
|
float g = (float) (color1 >> 8 & 255) / 255.0F;
|
||||||
float b = (float) (color & 255) / 255.0F;
|
float b = (float) (color1 & 255) / 255.0F;
|
||||||
renderer.drawString(matrices, text, (float) x, (float) y, r, g, b, alpha);
|
renderer.drawString(matrices, text, (float) x, (float) y, r, g, b, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,13 +52,14 @@ public class BruhAdapter implements FontAdapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawCenteredString(MatrixStack matrices, String text, double x, double y, int color) {
|
public void drawCenteredString(MatrixStack matrices, String text, double x, double y, int color) {
|
||||||
if ((color & 0xfc000000) == 0) {
|
int color1 = color;
|
||||||
color |= 0xff000000;
|
if ((color1 & 0xfc000000) == 0) {
|
||||||
|
color1 |= 0xff000000;
|
||||||
}
|
}
|
||||||
float alpha = (float) (color >> 24 & 255) / 255.0F;
|
float alpha = (float) (color1 >> 24 & 255) / 255.0F;
|
||||||
float r = (float) (color >> 16 & 255) / 255.0F;
|
float r = (float) (color1 >> 16 & 255) / 255.0F;
|
||||||
float g = (float) (color >> 8 & 255) / 255.0F;
|
float g = (float) (color1 >> 8 & 255) / 255.0F;
|
||||||
float b = (float) (color & 255) / 255.0F;
|
float b = (float) (color1 & 255) / 255.0F;
|
||||||
renderer.drawCenteredString(matrices, text, (float) x, (float) y, r, g, b, alpha);
|
renderer.drawCenteredString(matrices, text, (float) x, (float) y, r, g, b, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,13 +90,14 @@ public class BruhAdapter implements FontAdapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawString(MatrixStack matrices, String s, float x, float y, int color, boolean dropShadow) {
|
public void drawString(MatrixStack matrices, String s, float x, float y, int color, boolean dropShadow) {
|
||||||
if ((color & 0xfc000000) == 0) {
|
int color1 = color;
|
||||||
color |= 0xff000000;
|
if ((color1 & 0xfc000000) == 0) {
|
||||||
|
color1 |= 0xff000000;
|
||||||
}
|
}
|
||||||
float alpha = (float) (color >> 24 & 255) / 255.0F;
|
float alpha = (float) (color1 >> 24 & 255) / 255.0F;
|
||||||
float r = (float) (color >> 16 & 255) / 255.0F;
|
float r = (float) (color1 >> 16 & 255) / 255.0F;
|
||||||
float g = (float) (color >> 8 & 255) / 255.0F;
|
float g = (float) (color1 >> 8 & 255) / 255.0F;
|
||||||
float b = (float) (color & 255) / 255.0F;
|
float b = (float) (color1 & 255) / 255.0F;
|
||||||
drawString(matrices, s, x, y, r, g, b, alpha, dropShadow);
|
drawString(matrices, s, x, y, r, g, b, alpha, dropShadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class FontRenderer {
|
||||||
final Font f;
|
final Font f;
|
||||||
final Map<Character, Glyph> glyphMap = new ConcurrentHashMap<>();
|
final Map<Character, Glyph> glyphMap = new ConcurrentHashMap<>();
|
||||||
final int size;
|
final int size;
|
||||||
float cachedHeight;
|
final float cachedHeight;
|
||||||
|
|
||||||
public FontRenderer(Font f, int size) {
|
public FontRenderer(Font f, int size) {
|
||||||
this.f = f;
|
this.f = f;
|
||||||
|
@ -76,6 +76,9 @@ public class FontRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawString(MatrixStack matrices, String s, float x, float y, float r, float g, float b, float a) {
|
public void drawString(MatrixStack matrices, String s, float x, float y, float r, float g, float b, float a) {
|
||||||
|
float r1 = r;
|
||||||
|
float g1 = g;
|
||||||
|
float b1 = b;
|
||||||
matrices.push();
|
matrices.push();
|
||||||
matrices.translate(x, y, 0);
|
matrices.translate(x, y, 0);
|
||||||
matrices.scale(0.25F, 0.25F, 1f);
|
matrices.scale(0.25F, 0.25F, 1f);
|
||||||
|
@ -94,9 +97,9 @@ public class FontRenderer {
|
||||||
if (isInSelector) {
|
if (isInSelector) {
|
||||||
char upper = String.valueOf(c).toUpperCase().charAt(0);
|
char upper = String.valueOf(c).toUpperCase().charAt(0);
|
||||||
int color = colorMap.getOrDefault(upper, 0xFFFFFF);
|
int color = colorMap.getOrDefault(upper, 0xFFFFFF);
|
||||||
r = (float) (color >> 16 & 255) / 255.0F;
|
r1 = (float) (color >> 16 & 255) / 255.0F;
|
||||||
g = (float) (color >> 8 & 255) / 255.0F;
|
g1 = (float) (color >> 8 & 255) / 255.0F;
|
||||||
b = (float) (color & 255) / 255.0F;
|
b1 = (float) (color & 255) / 255.0F;
|
||||||
isInSelector = false;
|
isInSelector = false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -106,13 +109,14 @@ public class FontRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
||||||
double prevWidth = drawChar(bufferBuilder, matrix, c, r, g, b, a);
|
double prevWidth = drawChar(bufferBuilder, matrix, c, r1, g1, b1, a);
|
||||||
matrices.translate(prevWidth, 0, 0);
|
matrices.translate(prevWidth, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
matrices.pop();
|
matrices.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("AssignmentToForLoopParameter")
|
||||||
String stripControlCodes(String in) {
|
String stripControlCodes(String in) {
|
||||||
char[] s = in.toCharArray();
|
char[] s = in.toCharArray();
|
||||||
StringBuilder out = new StringBuilder();
|
StringBuilder out = new StringBuilder();
|
||||||
|
|
|
@ -65,9 +65,12 @@ public class Renderer {
|
||||||
if (fade == null) continue;
|
if (fade == null) continue;
|
||||||
long lifetimeLeft = fade.getLifeTimeLeft();
|
long lifetimeLeft = fade.getLifeTimeLeft();
|
||||||
double progress = lifetimeLeft / (double) fade.lifeTime;
|
double progress = lifetimeLeft / (double) fade.lifeTime;
|
||||||
|
double ip = 1 - progress;
|
||||||
|
stack.push();
|
||||||
Color out = Util.modify(fade.outline, -1, -1, -1, (int) (fade.outline.getAlpha() * progress));
|
Color out = Util.modify(fade.outline, -1, -1, -1, (int) (fade.outline.getAlpha() * progress));
|
||||||
Color fill = Util.modify(fade.fill, -1, -1, -1, (int) (fade.fill.getAlpha() * progress));
|
Color fill = Util.modify(fade.fill, -1, -1, -1, (int) (fade.fill.getAlpha() * progress));
|
||||||
Renderer.R3D.renderEdged(stack, fade.start, fade.dimensions, fill, out);
|
Renderer.R3D.renderEdged(stack, fade.start.add(new Vec3d(0.2, 0.2, 0.2).multiply(ip)), fade.dimensions.subtract(new Vec3d(.4, .4, .4).multiply(ip)), fill, out);
|
||||||
|
stack.pop();
|
||||||
}
|
}
|
||||||
fades = clone;
|
fades = clone;
|
||||||
}
|
}
|
||||||
|
@ -75,10 +78,10 @@ public class Renderer {
|
||||||
public static void renderCircleOutline(MatrixStack stack, Color c, Vec3d start, double rad, double width, double segments) {
|
public static void renderCircleOutline(MatrixStack stack, Color c, Vec3d start, double rad, double width, double segments) {
|
||||||
Camera camera = ShadowMain.client.gameRenderer.getCamera();
|
Camera camera = ShadowMain.client.gameRenderer.getCamera();
|
||||||
Vec3d camPos = camera.getPos();
|
Vec3d camPos = camera.getPos();
|
||||||
start = start.subtract(camPos);
|
Vec3d start1 = start.subtract(camPos);
|
||||||
stack.push();
|
stack.push();
|
||||||
stack.translate(start.x, start.y, start.z);
|
stack.translate(start1.x, start1.y, start1.z);
|
||||||
segments = MathHelper.clamp(segments, 2, 90);
|
double segments1 = MathHelper.clamp(segments, 2, 90);
|
||||||
int color = c.getRGB();
|
int color = c.getRGB();
|
||||||
|
|
||||||
Matrix4f matrix = stack.peek().getPositionMatrix();
|
Matrix4f matrix = stack.peek().getPositionMatrix();
|
||||||
|
@ -91,7 +94,7 @@ public class Renderer {
|
||||||
setupRender();
|
setupRender();
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
||||||
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR);
|
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR);
|
||||||
for (double r = 0; r < 360; r += (360 / segments)) {
|
for (double r = 0; r < 360; r += (360 / segments1)) {
|
||||||
double rad1 = Math.toRadians(r);
|
double rad1 = Math.toRadians(r);
|
||||||
double sin = Math.sin(rad1);
|
double sin = Math.sin(rad1);
|
||||||
double cos = Math.cos(rad1);
|
double cos = Math.cos(rad1);
|
||||||
|
@ -121,12 +124,12 @@ public class Renderer {
|
||||||
|
|
||||||
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
||||||
Vec3d camPos = c.getPos();
|
Vec3d camPos = c.getPos();
|
||||||
start = start.subtract(camPos);
|
Vec3d start1 = start.subtract(camPos);
|
||||||
Vec3d end = start.add(dimensions);
|
Vec3d end = start1.add(dimensions);
|
||||||
Matrix4f matrix = stack.peek().getPositionMatrix();
|
Matrix4f matrix = stack.peek().getPositionMatrix();
|
||||||
float x1 = (float) start.x;
|
float x1 = (float) start1.x;
|
||||||
float y1 = (float) start.y;
|
float y1 = (float) start1.y;
|
||||||
float z1 = (float) start.z;
|
float z1 = (float) start1.z;
|
||||||
float x2 = (float) end.x;
|
float x2 = (float) end.x;
|
||||||
float y2 = (float) end.y;
|
float y2 = (float) end.y;
|
||||||
float z2 = (float) end.z;
|
float z2 = (float) end.z;
|
||||||
|
@ -192,12 +195,12 @@ public class Renderer {
|
||||||
|
|
||||||
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
||||||
Vec3d camPos = c.getPos();
|
Vec3d camPos = c.getPos();
|
||||||
start = start.subtract(camPos);
|
Vec3d start1 = start.subtract(camPos);
|
||||||
Vec3d end = start.add(dimensions);
|
Vec3d end = start1.add(dimensions);
|
||||||
Matrix4f matrix = stack.peek().getPositionMatrix();
|
Matrix4f matrix = stack.peek().getPositionMatrix();
|
||||||
float x1 = (float) start.x;
|
float x1 = (float) start1.x;
|
||||||
float y1 = (float) start.y;
|
float y1 = (float) start1.y;
|
||||||
float z1 = (float) start.z;
|
float z1 = (float) start1.z;
|
||||||
float x2 = (float) end.x;
|
float x2 = (float) end.x;
|
||||||
float y2 = (float) end.y;
|
float y2 = (float) end.y;
|
||||||
float z2 = (float) end.z;
|
float z2 = (float) end.z;
|
||||||
|
@ -286,12 +289,12 @@ public class Renderer {
|
||||||
float alpha = color.getAlpha() / 255f;
|
float alpha = color.getAlpha() / 255f;
|
||||||
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
||||||
Vec3d camPos = c.getPos();
|
Vec3d camPos = c.getPos();
|
||||||
start = start.subtract(camPos);
|
Vec3d start1 = start.subtract(camPos);
|
||||||
Vec3d end = start.add(dimensions);
|
Vec3d end = start1.add(dimensions);
|
||||||
Matrix4f matrix = stack.peek().getPositionMatrix();
|
Matrix4f matrix = stack.peek().getPositionMatrix();
|
||||||
float x1 = (float) start.x;
|
float x1 = (float) start1.x;
|
||||||
float y1 = (float) start.y;
|
float y1 = (float) start1.y;
|
||||||
float z1 = (float) start.z;
|
float z1 = (float) start1.z;
|
||||||
float x2 = (float) end.x;
|
float x2 = (float) end.x;
|
||||||
float y2 = (float) end.y;
|
float y2 = (float) end.y;
|
||||||
float z2 = (float) end.z;
|
float z2 = (float) end.z;
|
||||||
|
@ -345,11 +348,11 @@ public class Renderer {
|
||||||
float alpha = color.getAlpha() / 255f;
|
float alpha = color.getAlpha() / 255f;
|
||||||
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
||||||
Vec3d camPos = c.getPos();
|
Vec3d camPos = c.getPos();
|
||||||
start = start.subtract(camPos);
|
Vec3d start1 = start.subtract(camPos);
|
||||||
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
||||||
float x1 = (float) start.x;
|
float x1 = (float) start1.x;
|
||||||
float y1 = (float) start.y;
|
float y1 = (float) start1.y;
|
||||||
float z1 = (float) start.z;
|
float z1 = (float) start1.z;
|
||||||
BufferBuilder buffer = Tessellator.getInstance().getBuffer();
|
BufferBuilder buffer = Tessellator.getInstance().getBuffer();
|
||||||
|
|
||||||
GL11.glDepthFunc(GL11.GL_ALWAYS);
|
GL11.glDepthFunc(GL11.GL_ALWAYS);
|
||||||
|
@ -376,15 +379,15 @@ public class Renderer {
|
||||||
float alpha = color.getAlpha() / 255f;
|
float alpha = color.getAlpha() / 255f;
|
||||||
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
Camera c = ShadowMain.client.gameRenderer.getCamera();
|
||||||
Vec3d camPos = c.getPos();
|
Vec3d camPos = c.getPos();
|
||||||
start = start.subtract(camPos);
|
Vec3d start1 = start.subtract(camPos);
|
||||||
end = end.subtract(camPos);
|
Vec3d end1 = end.subtract(camPos);
|
||||||
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
||||||
float x1 = (float) start.x;
|
float x1 = (float) start1.x;
|
||||||
float y1 = (float) start.y;
|
float y1 = (float) start1.y;
|
||||||
float z1 = (float) start.z;
|
float z1 = (float) start1.z;
|
||||||
float x2 = (float) end.x;
|
float x2 = (float) end1.x;
|
||||||
float y2 = (float) end.y;
|
float y2 = (float) end1.y;
|
||||||
float z2 = (float) end.z;
|
float z2 = (float) end1.z;
|
||||||
BufferBuilder buffer = Tessellator.getInstance().getBuffer();
|
BufferBuilder buffer = Tessellator.getInstance().getBuffer();
|
||||||
|
|
||||||
GL11.glDepthFunc(GL11.GL_ALWAYS);
|
GL11.glDepthFunc(GL11.GL_ALWAYS);
|
||||||
|
@ -603,9 +606,9 @@ public class Renderer {
|
||||||
public static void renderBezierCurve(MatrixStack stack, Vec2f[] points, float r, float g, float b, float a, float laziness) {
|
public static void renderBezierCurve(MatrixStack stack, Vec2f[] points, float r, float g, float b, float a, float laziness) {
|
||||||
if (points.length < 2) return;
|
if (points.length < 2) return;
|
||||||
float minIncr = 0.0001f;
|
float minIncr = 0.0001f;
|
||||||
laziness = MathHelper.clamp(laziness, minIncr, 1);
|
float laziness1 = MathHelper.clamp(laziness, minIncr, 1);
|
||||||
Vec2f prev = null;
|
Vec2f prev = null;
|
||||||
for (float d = 0; d <= 1; d += Math.min(laziness, Math.max(minIncr, 1 - d))) {
|
for (float d = 0; d <= 1; d += Math.min(laziness1, Math.max(minIncr, 1 - d))) {
|
||||||
Vec2f pos = getMultiBezPoint(points, d);
|
Vec2f pos = getMultiBezPoint(points, d);
|
||||||
if (prev == null) {
|
if (prev == null) {
|
||||||
prev = pos;
|
prev = pos;
|
||||||
|
@ -622,7 +625,7 @@ public class Renderer {
|
||||||
stack.translate(x, y, 0);
|
stack.translate(x, y, 0);
|
||||||
float rot = (System.currentTimeMillis() % 2000) / 2000f;
|
float rot = (System.currentTimeMillis() % 2000) / 2000f;
|
||||||
stack.multiply(new Quaternion(0, 0, rot * 360f, true));
|
stack.multiply(new Quaternion(0, 0, rot * 360f, true));
|
||||||
segments = MathHelper.clamp(segments, 2, 90);
|
double segments1 = MathHelper.clamp(segments, 2, 90);
|
||||||
|
|
||||||
Matrix4f matrix = stack.peek().getPositionMatrix();
|
Matrix4f matrix = stack.peek().getPositionMatrix();
|
||||||
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
||||||
|
@ -630,7 +633,7 @@ public class Renderer {
|
||||||
setupRender();
|
setupRender();
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
||||||
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR);
|
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR);
|
||||||
for (double r = 0; r < 90; r += (90 / segments)) {
|
for (double r = 0; r < 90; r += (90 / segments1)) {
|
||||||
double rad1 = Math.toRadians(r);
|
double rad1 = Math.toRadians(r);
|
||||||
double sin = Math.sin(rad1);
|
double sin = Math.sin(rad1);
|
||||||
double cos = Math.cos(rad1);
|
double cos = Math.cos(rad1);
|
||||||
|
@ -666,7 +669,7 @@ public class Renderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void renderCircle(MatrixStack matrices, Color c, double originX, double originY, double rad, int segments) {
|
public static void renderCircle(MatrixStack matrices, Color c, double originX, double originY, double rad, int segments) {
|
||||||
segments = MathHelper.clamp(segments, 4, 360);
|
int segments1 = MathHelper.clamp(segments, 4, 360);
|
||||||
int color = c.getRGB();
|
int color = c.getRGB();
|
||||||
|
|
||||||
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
||||||
|
@ -678,7 +681,7 @@ public class Renderer {
|
||||||
setupRender();
|
setupRender();
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
||||||
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_FAN, VertexFormats.POSITION_COLOR);
|
bufferBuilder.begin(VertexFormat.DrawMode.TRIANGLE_FAN, VertexFormats.POSITION_COLOR);
|
||||||
for (int i = 0; i < 360; i += Math.min((360 / segments), 360 - i)) {
|
for (int i = 0; i < 360; i += Math.min((360 / segments1), 360 - i)) {
|
||||||
double radians = Math.toRadians(i);
|
double radians = Math.toRadians(i);
|
||||||
double sin = Math.sin(radians) * rad;
|
double sin = Math.sin(radians) * rad;
|
||||||
double cos = Math.cos(radians) * rad;
|
double cos = Math.cos(radians) * rad;
|
||||||
|
@ -712,18 +715,22 @@ public class Renderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void renderQuad(MatrixStack matrices, Color c, double x1, double y1, double x2, double y2) {
|
public static void renderQuad(MatrixStack matrices, Color c, double x1, double y1, double x2, double y2) {
|
||||||
|
double x11 = x1;
|
||||||
|
double x21 = x2;
|
||||||
|
double y11 = y1;
|
||||||
|
double y21 = y2;
|
||||||
int color = c.getRGB();
|
int color = c.getRGB();
|
||||||
double j;
|
double j;
|
||||||
if (x1 < x2) {
|
if (x11 < x21) {
|
||||||
j = x1;
|
j = x11;
|
||||||
x1 = x2;
|
x11 = x21;
|
||||||
x2 = j;
|
x21 = j;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (y1 < y2) {
|
if (y11 < y21) {
|
||||||
j = y1;
|
j = y11;
|
||||||
y1 = y2;
|
y11 = y21;
|
||||||
y2 = j;
|
y21 = j;
|
||||||
}
|
}
|
||||||
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
||||||
float f = (float) (color >> 24 & 255) / 255.0F;
|
float f = (float) (color >> 24 & 255) / 255.0F;
|
||||||
|
@ -734,16 +741,20 @@ public class Renderer {
|
||||||
setupRender();
|
setupRender();
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
||||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||||
bufferBuilder.vertex(matrix, (float) x1, (float) y2, 0.0F).color(g, h, k, f).next();
|
bufferBuilder.vertex(matrix, (float) x11, (float) y21, 0.0F).color(g, h, k, f).next();
|
||||||
bufferBuilder.vertex(matrix, (float) x2, (float) y2, 0.0F).color(g, h, k, f).next();
|
bufferBuilder.vertex(matrix, (float) x21, (float) y21, 0.0F).color(g, h, k, f).next();
|
||||||
bufferBuilder.vertex(matrix, (float) x2, (float) y1, 0.0F).color(g, h, k, f).next();
|
bufferBuilder.vertex(matrix, (float) x21, (float) y11, 0.0F).color(g, h, k, f).next();
|
||||||
bufferBuilder.vertex(matrix, (float) x1, (float) y1, 0.0F).color(g, h, k, f).next();
|
bufferBuilder.vertex(matrix, (float) x11, (float) y11, 0.0F).color(g, h, k, f).next();
|
||||||
bufferBuilder.end();
|
bufferBuilder.end();
|
||||||
BufferRenderer.draw(bufferBuilder);
|
BufferRenderer.draw(bufferBuilder);
|
||||||
endRender();
|
endRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void renderQuadGradient(MatrixStack matrices, Color c2, Color c1, double x1, double y1, double x2, double y2) {
|
public static void renderQuadGradient(MatrixStack matrices, Color c2, Color c1, double x1, double y1, double x2, double y2) {
|
||||||
|
double x11 = x1;
|
||||||
|
double x21 = x2;
|
||||||
|
double y11 = y1;
|
||||||
|
double y21 = y2;
|
||||||
float r1 = c1.getRed() / 255f;
|
float r1 = c1.getRed() / 255f;
|
||||||
float g1 = c1.getGreen() / 255f;
|
float g1 = c1.getGreen() / 255f;
|
||||||
float b1 = c1.getBlue() / 255f;
|
float b1 = c1.getBlue() / 255f;
|
||||||
|
@ -755,16 +766,16 @@ public class Renderer {
|
||||||
|
|
||||||
double j;
|
double j;
|
||||||
|
|
||||||
if (x1 < x2) {
|
if (x11 < x21) {
|
||||||
j = x1;
|
j = x11;
|
||||||
x1 = x2;
|
x11 = x21;
|
||||||
x2 = j;
|
x21 = j;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (y1 < y2) {
|
if (y11 < y21) {
|
||||||
j = y1;
|
j = y11;
|
||||||
y1 = y2;
|
y11 = y21;
|
||||||
y2 = j;
|
y21 = j;
|
||||||
}
|
}
|
||||||
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
Matrix4f matrix = matrices.peek().getPositionMatrix();
|
||||||
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
||||||
|
@ -772,10 +783,10 @@ public class Renderer {
|
||||||
|
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
||||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||||
bufferBuilder.vertex(matrix, (float) x1, (float) y1, 0.0F).color(r1, g1, b1, a1).next();
|
bufferBuilder.vertex(matrix, (float) x11, (float) y11, 0.0F).color(r1, g1, b1, a1).next();
|
||||||
bufferBuilder.vertex(matrix, (float) x1, (float) y2, 0.0F).color(r1, g1, b1, a1).next();
|
bufferBuilder.vertex(matrix, (float) x11, (float) y21, 0.0F).color(r1, g1, b1, a1).next();
|
||||||
bufferBuilder.vertex(matrix, (float) x2, (float) y2, 0.0F).color(r2, g2, b2, a2).next();
|
bufferBuilder.vertex(matrix, (float) x21, (float) y21, 0.0F).color(r2, g2, b2, a2).next();
|
||||||
bufferBuilder.vertex(matrix, (float) x2, (float) y1, 0.0F).color(r2, g2, b2, a2).next();
|
bufferBuilder.vertex(matrix, (float) x21, (float) y11, 0.0F).color(r2, g2, b2, a2).next();
|
||||||
bufferBuilder.end();
|
bufferBuilder.end();
|
||||||
BufferRenderer.draw(bufferBuilder);
|
BufferRenderer.draw(bufferBuilder);
|
||||||
endRender();
|
endRender();
|
||||||
|
|
|
@ -19,9 +19,9 @@ public class Transitions {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double transition(double value, double goal, double speed, double skipSize) {
|
public static double transition(double value, double goal, double speed, double skipSize) {
|
||||||
speed = speed < 1 ? 1 : speed;
|
double speed1 = speed < 1 ? 1 : speed;
|
||||||
double diff = goal - value;
|
double diff = goal - value;
|
||||||
double diffCalc = diff / speed;
|
double diffCalc = diff / speed1;
|
||||||
if (Math.abs(diffCalc) < skipSize) {
|
if (Math.abs(diffCalc) < skipSize) {
|
||||||
diffCalc = diff;
|
diffCalc = diff;
|
||||||
}
|
}
|
||||||
|
|
|
@ -293,15 +293,15 @@ public class Utils {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UUID getUUIDFromName(String name) {
|
public static UUID getUUIDFromName(String name) {
|
||||||
name = completeName(name); // this really helps trust me
|
String name1 = completeName(name); // this really helps trust me
|
||||||
if (!isPlayerNameValid(name)) {
|
if (!isPlayerNameValid(name1)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (UUID_CACHE.containsKey(name.toLowerCase())) {
|
if (UUID_CACHE.containsKey(name1.toLowerCase())) {
|
||||||
return UUID_CACHE.get(name.toLowerCase());
|
return UUID_CACHE.get(name1.toLowerCase());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
HttpRequest req = HttpRequest.newBuilder().GET().uri(URI.create("https://api.mojang.com/users/profiles/minecraft/" + name)).build();
|
HttpRequest req = HttpRequest.newBuilder().GET().uri(URI.create("https://api.mojang.com/users/profiles/minecraft/" + name1)).build();
|
||||||
HttpResponse<String> response = client.send(req, HttpResponse.BodyHandlers.ofString());
|
HttpResponse<String> response = client.send(req, HttpResponse.BodyHandlers.ofString());
|
||||||
if (response.statusCode() == 204 || response.statusCode() == 400) {
|
if (response.statusCode() == 204 || response.statusCode() == 400) {
|
||||||
return null; // no user / invalid username
|
return null; // no user / invalid username
|
||||||
|
@ -310,7 +310,7 @@ public class Utils {
|
||||||
String id = root.get("id").getAsString();
|
String id = root.get("id").getAsString();
|
||||||
String uuid = id.replaceAll("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5");
|
String uuid = id.replaceAll("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5");
|
||||||
UUID u = UUID.fromString(uuid);
|
UUID u = UUID.fromString(uuid);
|
||||||
UUID_CACHE.put(name.toLowerCase(), u);
|
UUID_CACHE.put(name1.toLowerCase(), u);
|
||||||
return u;
|
return u;
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class AChatScreenMixin extends Screen {
|
||||||
protected TextFieldWidget chatField;
|
protected TextFieldWidget chatField;
|
||||||
String previousSuggestionInput = "";
|
String previousSuggestionInput = "";
|
||||||
@Shadow
|
@Shadow
|
||||||
private CommandSuggestor commandSuggestor;
|
CommandSuggestor commandSuggestor;
|
||||||
|
|
||||||
protected AChatScreenMixin(Text title) {
|
protected AChatScreenMixin(Text title) {
|
||||||
super(title);
|
super(title);
|
||||||
|
@ -85,7 +85,7 @@ public class AChatScreenMixin extends Screen {
|
||||||
if (args.length > 0) {
|
if (args.length > 0) {
|
||||||
Command c = CommandRegistry.getByAlias(cmd);
|
Command c = CommandRegistry.getByAlias(cmd);
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
a = List.of(c.getSuggestions(command, args));
|
a = List.of(c.getSuggestionsWithType(args.length - 1, args).getSuggestions());
|
||||||
} else {
|
} else {
|
||||||
return new ArrayList<>(); // we have no command to ask -> we have no suggestions
|
return new ArrayList<>(); // we have no command to ask -> we have no suggestions
|
||||||
}
|
}
|
||||||
|
@ -208,7 +208,7 @@ public class AChatScreenMixin extends Screen {
|
||||||
countedSpaceBefore = false;
|
countedSpaceBefore = false;
|
||||||
if (i < integer) continue;
|
if (i < integer) continue;
|
||||||
if (countedGaps >= 1) {
|
if (countedGaps >= 1) {
|
||||||
ArgumentType current = c.getArgumentType(args, "", countedGaps - 1);
|
ArgumentType current = c.getSuggestionsWithType(countedGaps - 1, args).getType();
|
||||||
int col = 0xFFFFFF;
|
int col = 0xFFFFFF;
|
||||||
if (current != null) col = current.getColor().getRGB();
|
if (current != null) col = current.getColor().getRGB();
|
||||||
texts.add(OrderedText.styledForwardsVisitedString(String.valueOf(c1), Style.EMPTY.withColor(col)));
|
texts.add(OrderedText.styledForwardsVisitedString(String.valueOf(c1), Style.EMPTY.withColor(col)));
|
||||||
|
|
|
@ -15,16 +15,17 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||||
public class EntityRendererMixin {
|
public class EntityRendererMixin {
|
||||||
@ModifyVariable(method = "renderLabelIfPresent", at = @At("HEAD"), index = 2, argsOnly = true)
|
@ModifyVariable(method = "renderLabelIfPresent", at = @At("HEAD"), index = 2, argsOnly = true)
|
||||||
Text real(Text text) {
|
Text real(Text text) {
|
||||||
|
Text text1 = text;
|
||||||
AntiCrash ac = AntiCrash.instance();
|
AntiCrash ac = AntiCrash.instance();
|
||||||
if (ac.isEnabled() && ac.getCapNames().getValue()) {
|
if (ac.isEnabled() && ac.getCapNames().getValue()) {
|
||||||
String t = text.getString();
|
String t = text1.getString();
|
||||||
int maxlen = (int) Math.floor(ac.getNameMax().getValue());
|
int maxlen = (int) Math.floor(ac.getNameMax().getValue());
|
||||||
int len = t.length();
|
int len = t.length();
|
||||||
if (len > maxlen) {
|
if (len > maxlen) {
|
||||||
t = t.substring(0, maxlen) + "§r...";
|
t = t.substring(0, maxlen) + "§r...";
|
||||||
}
|
}
|
||||||
text = Text.of(t);
|
text1 = Text.of(t);
|
||||||
}
|
}
|
||||||
return text;
|
return text1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.util.Iterator;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
@Debug(export = true)
|
@Debug(export = true)
|
||||||
@Mixin(targets = "net/minecraft/client/render/chunk/ChunkBuilder$BuiltChunk$RebuildTask")
|
@Mixin(targets = "net/minecraft/client/render/chunk/ChunkBuilder$BuiltChunk$RebuildTask")
|
||||||
public class RebuildTaskMixin {
|
public class RebuildTaskMixin {
|
||||||
|
|
Reference in a new issue