Skip to content
Draft
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import meteordevelopment.meteorclient.settings.Setting;
import net.minecraft.command.CommandSource;
import net.minecraft.util.Identifier;

import java.util.concurrent.CompletableFuture;

Expand All @@ -39,6 +37,7 @@ public String parse(StringReader reader) throws CommandSyntaxException {

@Override
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {

Setting<?> setting;

try {
Expand All @@ -47,11 +46,6 @@ public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> cont
return Suggestions.empty();
}

Iterable<Identifier> identifiers = setting.getIdentifierSuggestions();
if (identifiers != null) {
return CommandSource.suggestIdentifiers(identifiers, builder);
}

return CommandSource.suggestMatching(setting.getSuggestions(), builder);
return setting.buildSuggestions(builder);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import meteordevelopment.meteorclient.commands.arguments.ModuleArgumentType;
import meteordevelopment.meteorclient.commands.arguments.PlayerArgumentType;
import meteordevelopment.meteorclient.pathing.PathManagers;
import meteordevelopment.meteorclient.settings.groups.GroupSet;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.misc.swarm.Swarm;
Expand Down Expand Up @@ -212,7 +213,8 @@ else if (swarm.isWorker()) {
swarm.host.sendMessage(context.getInput());
}
else if (swarm.isWorker()) {
Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
// TODO: resolve
Modules.get().get(InfinityMiner.class).targetBlocks.set(new GroupSet<>(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock())));
runInfinityMiner();
}
}
Expand All @@ -228,8 +230,9 @@ else if (swarm.isWorker()) {
swarm.host.sendMessage(context.getInput());
}
else if (swarm.isWorker()) {
Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
Modules.get().get(InfinityMiner.class).repairBlocks.set(List.of(context.getArgument("repair", BlockStateArgument.class).getBlockState().getBlock()));
// TODO: resolve
Modules.get().get(InfinityMiner.class).targetBlocks.set(new GroupSet<>(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock())));
Modules.get().get(InfinityMiner.class).repairBlocks.set(new GroupSet<>(List.of(context.getArgument("repair", BlockStateArgument.class).getBlockState().getBlock())));
runInfinityMiner();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ public DefaultSettingsWidgetFactory(GuiTheme theme) {
factories.put(BlockSetting.class, (table, setting) -> blockW(table, (BlockSetting) setting));
factories.put(BlockListSetting.class, (table, setting) -> blockListW(table, (BlockListSetting) setting));
factories.put(ItemSetting.class, (table, setting) -> itemW(table, (ItemSetting) setting));
factories.put(ItemListSetting.class, (table, setting) -> itemListW(table, (ItemListSetting) setting));
factories.put(EntityTypeListSetting.class, (table, setting) -> entityTypeListW(table, (EntityTypeListSetting) setting));
factories.put(ItemSetSetting.class, (table, setting) -> itemListW(table, (ItemSetSetting) setting));
factories.put(EntityTypeSetSetting.class, (table, setting) -> entityTypeListW(table, (EntityTypeSetSetting) setting));
factories.put(EnchantmentListSetting.class, (table, setting) -> enchantmentListW(table, (EnchantmentListSetting) setting));
factories.put(ModuleListSetting.class, (table, setting) -> moduleListW(table, (ModuleListSetting) setting));
factories.put(PacketListSetting.class, (table, setting) -> packetListW(table, (PacketListSetting) setting));
Expand Down Expand Up @@ -273,7 +273,7 @@ private void blockPosW(WTable table, BlockPosSetting setting) {
}

private void blockListW(WTable table, BlockListSetting setting) {
selectW(table, setting, () -> mc.setScreen(new BlockListSettingScreen(theme, setting)));
selectW(table, setting, () -> mc.setScreen(new BlockSetSettingScreen(theme, setting)));
}

private void itemW(WTable table, ItemSetting setting) {
Expand All @@ -292,12 +292,12 @@ private void itemW(WTable table, ItemSetting setting) {
reset(table, setting, () -> item.set(setting.get().getDefaultStack()));
}

private void itemListW(WTable table, ItemListSetting setting) {
selectW(table, setting, () -> mc.setScreen(new ItemListSettingScreen(theme, setting)));
private void itemListW(WTable table, ItemSetSetting setting) {
selectW(table, setting, () -> mc.setScreen(new ItemSetSettingScreen(theme, setting)));
}

private void entityTypeListW(WTable table, EntityTypeListSetting setting) {
selectW(table, setting, () -> mc.setScreen(new EntityTypeListSettingScreen(theme, setting)));
private void entityTypeListW(WTable table, EntityTypeSetSetting setting) {
selectW(table, setting, () -> mc.setScreen(new EntityTypeSetSettingScreen(theme, setting)));
}

private void enchantmentListW(WTable table, EnchantmentListSetting setting) {
Expand Down
35 changes: 35 additions & 0 deletions src/main/java/meteordevelopment/meteorclient/gui/GuiIcon.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
* Copyright (c) Meteor Development.
*/

package meteordevelopment.meteorclient.gui;

import meteordevelopment.meteorclient.gui.renderer.packer.GuiTexture;
import meteordevelopment.meteorclient.utils.render.color.Color;

import javax.annotation.Nullable;

public class GuiIcon {

public GuiTexture texture;
public double rotation;
public @Nullable Color color;

public GuiIcon(GuiTexture texture, double rotation, @Nullable Color color) {
this.texture = texture;
this.rotation = rotation;
this.color = color;
}
public GuiIcon(GuiTexture texture) {
this(texture, 0, null);
}

public GuiIcon(GuiTexture texture, double rotation) {
this(texture, rotation, null);
}

public GuiIcon(GuiTexture texture, Color color) {
this(texture, 0, color);
}
}
17 changes: 11 additions & 6 deletions src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,22 +80,27 @@ public WHorizontalSeparator horizontalSeparator() {
}
public abstract WVerticalSeparator verticalSeparator();

protected abstract WButton button(String text, GuiTexture texture);
protected abstract WButton button(String text, GuiIcon icon);
public WButton button(String text) {
return button(text, null);
}
public WButton button(GuiTexture texture) {
return button(null, texture);
public WButton button(GuiIcon icon) {
return button(null, icon);
}

protected abstract WConfirmedButton confirmedButton(String text, String confirmText, GuiTexture texture);

protected abstract WConfirmedButton confirmedButton(String text, String confirmText, GuiIcon icon);
public WConfirmedButton confirmedButton(String text, String confirmText) {
return confirmedButton(text, confirmText, null);
}
public WConfirmedButton confirmedButton(GuiTexture texture) {
return confirmedButton(null, null, texture);
public WConfirmedButton confirmedButton(GuiIcon icon) {
return confirmedButton(null, null, icon);
}

// for compatibility
final public WButton button(GuiTexture texture) { return button(null, texture.icon()); }
final public WButton confirmedButton(GuiTexture texture) { return confirmedButton(null, null, texture.icon()); }

public abstract WMinus minus();
public abstract WConfirmedMinus confirmedMinus();
public abstract WPlus plus();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import it.unimi.dsi.fastutil.Stack;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import meteordevelopment.meteorclient.MeteorClient;
import meteordevelopment.meteorclient.gui.GuiIcon;
import meteordevelopment.meteorclient.gui.GuiTheme;
import meteordevelopment.meteorclient.gui.renderer.operations.TextOperation;
import meteordevelopment.meteorclient.gui.renderer.packer.GuiTexture;
Expand Down Expand Up @@ -38,6 +39,7 @@ public class GuiRenderer {

public static GuiTexture CIRCLE;
public static GuiTexture TRIANGLE;
public static GuiTexture ARROWHEAD, ARROWHEAD_DOUBLE;
public static GuiTexture EDIT;
public static GuiTexture RESET;
public static GuiTexture FAVORITE_NO, FAVORITE_YES;
Expand Down Expand Up @@ -70,6 +72,9 @@ public static GuiTexture addTexture(Identifier id) {
public static void init() {
CIRCLE = addTexture(MeteorClient.identifier("textures/icons/gui/circle.png"));
TRIANGLE = addTexture(MeteorClient.identifier("textures/icons/gui/triangle.png"));
ARROWHEAD = addTexture(MeteorClient.identifier("textures/icons/gui/arrowhead.png"));
ARROWHEAD_DOUBLE = addTexture(MeteorClient.identifier("textures/icons/gui/double-arrowhead.png"));
FAVORITE_YES = addTexture(MeteorClient.identifier("textures/icons/gui/triangle.png"));
EDIT = addTexture(MeteorClient.identifier("textures/icons/gui/edit.png"));
RESET = addTexture(MeteorClient.identifier("textures/icons/gui/reset.png"));
FAVORITE_NO = addTexture(MeteorClient.identifier("textures/icons/gui/favorite_no.png"));
Expand Down Expand Up @@ -240,6 +245,11 @@ public void rotatedQuad(double x, double y, double width, double height, double
rTex.texQuad(x, y, width, height, rotation, texture.get(width, height), color);
}

public void iconQuad(double x, double y, double width, double height, GuiIcon icon, Color defaultColor) {
if (icon.color != null) defaultColor = icon.color;
rotatedQuad(x, y, width, height, icon.rotation, icon.texture, defaultColor);
}

public void triangle(double x1, double y1, double x2, double y2, double x3, double y3, Color color) {
r.triangle(x1, y1, x2, y2, x3, y3 ,color);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

package meteordevelopment.meteorclient.gui.renderer.packer;

import meteordevelopment.meteorclient.gui.GuiIcon;
import meteordevelopment.meteorclient.utils.render.color.Color;

import java.util.ArrayList;
import java.util.List;

Expand Down Expand Up @@ -32,4 +35,20 @@ public TextureRegion get(double width, double height) {

return closestRegion;
}

public GuiIcon icon() {
return new GuiIcon(this);
}

public GuiIcon icon(double rotation) {
return new GuiIcon(this, rotation);
}

public GuiIcon icon(Color color) {
return new GuiIcon(this, color);
}

public GuiIcon icon(double rotation, Color color) {
return new GuiIcon(this, rotation, color);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
package meteordevelopment.meteorclient.gui.screens.settings;

import meteordevelopment.meteorclient.gui.GuiTheme;
import meteordevelopment.meteorclient.gui.screens.settings.base.CollectionListSettingScreen;
import meteordevelopment.meteorclient.gui.screens.settings.base.GroupedSetSettingScreen;
import meteordevelopment.meteorclient.gui.widgets.WWidget;
import meteordevelopment.meteorclient.settings.BlockListSetting;
import meteordevelopment.meteorclient.utils.misc.Names;
Expand All @@ -17,9 +17,9 @@

import java.util.function.Predicate;

public class BlockListSettingScreen extends CollectionListSettingScreen<Block> {
public BlockListSettingScreen(GuiTheme theme, BlockListSetting setting) {
super(theme, "Select Blocks", setting, setting.get(), Registries.BLOCK);
public class BlockSetSettingScreen extends GroupedSetSettingScreen<Block, BlockListSetting> {
public BlockSetSettingScreen(GuiTheme theme, BlockListSetting setting) {
super(theme, "Select Blocks", setting, BlockListSetting.GROUPS, Registries.BLOCK);
}

@Override
Expand All @@ -28,15 +28,15 @@ protected boolean includeValue(Block value) {
return false;
}

Predicate<Block> filter = ((BlockListSetting) setting).filter;
Predicate<Block> filter = setting.getFilter();

if (filter == null) return value != Blocks.AIR;
return filter.test(value);
}

@Override
protected WWidget getValueWidget(Block value) {
return theme.itemWithLabel(value.asItem().getDefaultStack(), Names.get(value));
return theme.itemWithLabel(value.asItem().getDefaultStack(), Names.get(value)).color(includeValue(value) ? theme.textColor() : theme.textSecondaryColor());
}

@Override
Expand Down
Loading