diff --git a/c b/c new file mode 100644 index 0000000..7827b4f --- /dev/null +++ b/c @@ -0,0 +1,258 @@ +commit 126b7ef4a72da1b9b80c0b8b585e91afec6f264d (HEAD -> brasil, origin/brasil) +Author: wuritz +Date: Sun Jul 20 11:25:06 2025 +0200 + + elvileg minden fasza + +commit 45f8d95e94d6a315877558b904a7d3643c4b4a50 +Author: wuritz +Date: Sat Jul 19 23:28:17 2025 +0200 + + genyo blink + +commit 8585ef7b6b26a394e9b5b303ffa3d317ee30e026 +Author: wuritz +Date: Sat Jul 19 20:10:08 2025 +0200 + + genyo welcome + +commit 873fef998b57508b046822ee8200c3ed2004db45 +Author: wuritz +Date: Tue Jul 15 13:17:29 2025 +0200 + + genyo module + +commit 684f30a22faf7ba289dbef206c0bce865ef1178f +Author: wuritz +Date: Mon Jul 14 23:39:58 2025 +0200 + + mostmar nem crashel 1 sizeos listaknal + +commit e4d8682cbe5e2a3bc108890f42d1089fdd2e6725 +Author: wuritz +Date: Mon Jul 14 23:24:22 2025 +0200 + + surround wooo + +commit 0b7cb632ac7c5fdc6e5f86fa99ff4fc945b4d39b +Author: wuritz +Date: Sat Jul 12 13:52:15 2025 +0200 + + in combat, csak nem mukszik a cooldown render + +commit 6fc6afd9a845901f72964ebe7d5dbee343ae05b1 +Author: wuritz +Date: Fri Jul 11 09:09:51 2025 +0200 + + mukszik a trajectory + +commit 4049f1e163b1ead7fde4b0cf5e56326339d64e20 +Author: wuritz +Date: Thu Jul 10 08:54:30 2025 +0200 + + yeee + +commit 0b86ffab0df3225bd308f400d362b9b68df0ece2 +Author: wuritz +Date: Thu Jul 10 08:43:51 2025 +0200 + + mukszik a traj + +commit 1d372e2576bffe9b3f312b62a8eb0388dbbe69e5 +Author: wuritz +Date: Tue Jul 8 10:01:27 2025 +0200 + + hulkenberg megin jobb + +commit 4a872fe9270ad40c89cd046e177036a1799aa489 +Merge: 317d537 2562cca +Author: wuritz +Date: Mon Jul 7 23:25:40 2025 +0200 + + Merge remote-tracking branch 'origin/brasil' into brasil + +commit 317d537222c3ad745e5712daddb0a85fbed3065f +Author: wuritz +Date: Mon Jul 7 23:24:19 2025 +0200 + + igen + +commit 2562ccaa0fc3630216d0144b4b13a9619176adbe +Author: wuritz +Date: Mon Jul 7 23:24:19 2025 +0200 + + igen + +commit 86890891ccacb94852b744c9ad6edcf388232e31 +Author: wuritz +Date: Mon Jul 7 23:08:09 2025 +0200 + + eltunik yooooo + +commit 7bb49127b383d418f6cbe7a77ff3ffb2b5800312 +Author: wuritz +Date: Sun Jul 6 22:08:25 2025 +0200 + + rossz wolt az accesswidener + +commit 995c1ffb840e8a0479accf95768206f63abdce69 +Author: wuritz +Date: Sun Jul 6 22:04:26 2025 +0200 + + angel hulkenberg + +commit 23c39a8ed8f0a6c5208d67391c34fa54d7feea17 +Author: wuritz +Date: Sun Jul 6 22:01:26 2025 +0200 + + angel hulkenberg + +commit df318ca9711c31389c38699bbcf473d69feea97d +Author: wuritz +Date: Sun Jun 29 11:59:01 2025 +0200 + + meg mielott elbasznam + +commit 4ea49baeb95b592d23945b11cb41050b61975587 +Author: wuritz +Date: Sun Jun 22 23:29:50 2025 +0200 + + enemies + +commit 6a30b7b503cf8d9d0f119cb4201ba21cf1da5c84 +Author: wuritz +Date: Sun Jun 22 13:25:02 2025 +0200 + + auto ez? + +commit 0dc1bf617d431bace2c47f2575f4ebd7dda7307e +Author: wuritz +Date: Sun Jun 22 12:18:42 2025 +0200 + + auto ez + +commit 85360639a1a1dcf341b09f1641fea9241f24089d +Author: wuritz +Date: Sun Jun 22 11:17:31 2025 +0200 + + fasz genyo fasz + +commit d48c94bb0ee3b401bc5b5e010871b9e271ee0304 +Author: wuritz +Date: Sun Jun 22 00:41:24 2025 +0200 + + ffffa + +commit 7f1a37ef88f596fa3fd6a40cc4807f0c896d4bd7 +Author: wuritz +Date: Sat Jun 21 12:42:02 2025 +0200 + + fass + +commit f1dc1d886e8fd37dc5f3c1a734a4cd5527572150 +Author: wuritz +Date: Sat Jun 21 12:40:38 2025 +0200 + + mixin + +commit b4451d7b8b2fc6854e7bc6e0e5fc90e94a228a1d +Author: wuritz +Date: Sat Jun 21 12:25:55 2025 +0200 + + genyo jobb + +commit 05aff3e3d7f3b0483466ee5fdad4a2de7c394668 +Author: wuritz +Date: Sat Jun 21 12:23:36 2025 +0200 + + genyo genyo mostmar jobb + +commit fe5dde06cfb19008ecb50d6b5b22fa7cd4b1da46 (tag: Genyo) +Author: wuritz +Date: Sat Jun 21 00:32:47 2025 +0200 + + genyo + +commit 35369cd1008714863ea7590ab07bc264d58aed24 +Author: wuritz +Date: Sat Jun 21 00:15:46 2025 +0200 + + genyo + +commit ab2baad46f6f690e349d16d0582ace26e64b6d66 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:22:12 2025 +0200 + + Delete gradle directory + +commit de406708b999be0647fa935127478a0272918013 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:22:07 2025 +0200 + + Delete src directory + +commit 98edadca233013c294cd39d0713f403e8255c588 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:22:01 2025 +0200 + + Delete .editorconfig + +commit a8c35152f0e7f6332e124f763cf9a8c142c2bcc2 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:53 2025 +0200 + + Delete .gitignore + +commit 58dc8f4c2321916ef72ac45ab81a893f2d950649 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:48 2025 +0200 + + Delete LICENSE + +commit 785b4b5df405b753d2a148c1a30fa3bae3e2c631 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:43 2025 +0200 + + Delete gradle.properties + +commit c817557346c4c12497d65091d86481ce9de28f51 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:37 2025 +0200 + + Delete README.md + +commit f0a7e33dfa3a03163d322bae3d17ce772e78bff7 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:28 2025 +0200 + + Delete gradlew + +commit 7e7f590e3cf157f693911e0a48e2399d496d3d0d +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:23 2025 +0200 + + Delete gradlew.bat + +commit 18e4ecb04105053425646330d501653bb9bc6d8e +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:18 2025 +0200 + + Delete settings.gradle.kts + +commit 01afc005e32fac81c1935fe6c974a7b09c890f32 +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:21:09 2025 +0200 + + Delete build.gradle.kts + +commit 77e40d543a743324c8a4e0d0cf56c98dd141a5cf +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Sat Jun 21 00:20:46 2025 +0200 + + Delete .github/workflows directory + +commit edb5a105974719a364cd2f9fc651ffff88b2792e +Author: Ritz Richárd <38112734+wuritz@users.noreply.github.com> +Date: Fri Jun 20 21:05:32 2025 +0200 + + Initial commit diff --git a/src/main/java/com/genyo/addon/mixin/DefaultSettingsWidgetFactoryMixin.java b/src/main/java/com/genyo/addon/mixin/DefaultSettingsWidgetFactoryMixin.java index 305e4f2..24f3b16 100644 --- a/src/main/java/com/genyo/addon/mixin/DefaultSettingsWidgetFactoryMixin.java +++ b/src/main/java/com/genyo/addon/mixin/DefaultSettingsWidgetFactoryMixin.java @@ -1,7 +1,6 @@ package com.genyo.addon.mixin; -import com.genyo.addon.screens.PlayerListScreen; -import com.genyo.addon.settings.PlayerListSetting; +import com.genyo.addon.settings.playerlist.ListGroupSetting; import meteordevelopment.meteorclient.gui.DefaultSettingsWidgetFactory; import meteordevelopment.meteorclient.gui.GuiTheme; import meteordevelopment.meteorclient.gui.utils.SettingsWidgetFactory; @@ -14,8 +13,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import static meteordevelopment.meteorclient.MeteorClient.mc; - @Mixin(DefaultSettingsWidgetFactory.class) public abstract class DefaultSettingsWidgetFactoryMixin extends SettingsWidgetFactory { @@ -28,10 +25,11 @@ public DefaultSettingsWidgetFactoryMixin(GuiTheme theme) { @Inject(method = "", at = @At("TAIL")) protected void genyo(CallbackInfo info) { - factories.put(PlayerListSetting.class, (table, setting) -> playerListW(table, (PlayerListSetting) setting)); + factories.put(ListGroupSetting.class, (table, setting) -> listGroupW(table, (ListGroupSetting) setting)); } - private void playerListW(WTable table, PlayerListSetting setting) { - selectW(table, setting, () -> mc.setScreen(new PlayerListScreen(theme, "Add Players", setting))); + private void listGroupW(WTable table, ListGroupSetting setting) { + WTable wtable = table.add(theme.table()).expandX().widget(); + ListGroupSetting.fillTable(theme, wtable, setting); } } diff --git a/src/main/java/com/genyo/addon/modules/GenyoWelcome.java b/src/main/java/com/genyo/addon/modules/GenyoWelcome.java index 689fa9a..f4b8ced 100644 --- a/src/main/java/com/genyo/addon/modules/GenyoWelcome.java +++ b/src/main/java/com/genyo/addon/modules/GenyoWelcome.java @@ -1,7 +1,8 @@ package com.genyo.addon.modules; import com.genyo.addon.GenyoAddon; -import com.genyo.addon.settings.PlayerListSetting; +import com.genyo.addon.settings.playerlist.ListGroupSetting; +import com.genyo.addon.settings.playerlist.PLGroup; import com.mojang.authlib.GameProfile; import com.mojang.util.UndashedUuid; import meteordevelopment.meteorclient.events.game.GameJoinedEvent; @@ -11,7 +12,6 @@ import meteordevelopment.meteorclient.settings.IntSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.SettingGroup; -import meteordevelopment.meteorclient.settings.StringSetting; import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.network.Http; import meteordevelopment.meteorclient.utils.player.ChatUtils; @@ -23,35 +23,31 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.nbt.NbtCompound; import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket; +import net.minecraft.network.packet.s2c.play.PlayerRemoveS2CPacket; import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; public class GenyoWelcome extends GenyoModule { - public static List genyo = new ArrayList<>(); - private Set onlinePlayers = new HashSet<>(); private final List messageQueue = new LinkedList<>(); private int timer = 0; + private ArrayList groupsList = new ArrayList<>(); + private ArrayList namesList = new ArrayList<>(); + private final SettingGroup sgGeneral = settings.getDefaultGroup(); - private final Setting> players = sgGeneral.add(new PlayerListSetting.Builder() - .name("Players") + private final Setting> groups = sgGeneral.add(new ListGroupSetting.Builder() + .name("Groups:") .description("sdasdjgewqjhgfjhgewjhfg ew gfjhewgfhjgwehjf gjhwe few") .onChanged(this::refreshList) .build() ); - private final Setting message = sgGeneral.add(new StringSetting.Builder() - .name("Message") - .description(" ewhfhewjkfhejwkhfhewkjfhewjkfhkjewhfkhewfke") - .defaultValue("genyo ") - .build() - ); - private final Setting tickDelay = sgGeneral.add(new IntSetting.Builder() .name("Delay") .description("tick delay between the messages.") @@ -67,7 +63,7 @@ public void onActivate() { } public GenyoWelcome() { - super(GenyoAddon.GENYO, "Genyo Welcome", "i love kiwi. i love kiwi. i love kiwi. i love kiwi. i love kiwi."); + super(GenyoAddon.GENYO, "genyo-welcome", "i love kiwi. i love kiwi. i love kiwi. i love kiwi. i love kiwi."); } @EventHandler @@ -107,54 +103,50 @@ private void onReceivePacket(PacketEvent.Receive event) { if (profile == null) return; String name = profile.getName(); - if (!contains(name)) return; + if (!namesList.contains(name)) return; UUID playerUuid = profile.getId(); + GenyoAddon.LOG.info(pac.getActions().toString()); + if (!pac.getActions().contains(PlayerListS2CPacket.Action.ADD_PLAYER) && playerUuid != null && !onlinePlayers.contains(playerUuid)) return; handleMessage(name); onlinePlayers.add(playerUuid); }); - } + }/* else if (event.packet instanceof PlayerRemoveS2CPacket pac) { + GenyoAddon.LOG.info(pac.toString()); + }*/ } private void handleMessage(String name) { if (mc.world == null) return; - String toSend = message.get(); + AtomicReference atomicMSG = new AtomicReference<>(""); + groupsList.forEach(group -> { + if (group.containsPlayer(name)) { + atomicMSG.set(group.getMessage()); + } + }); + String toSend = atomicMSG.get(); toSend = toSend.contains("") ? toSend.replace("", name) : toSend; Message msg = new Message(toSend, false); messageQueue.add(msg); } - private boolean contains(String name) { - for (ListPlayer listPlayer : players.get()) { - if (listPlayer.name.equalsIgnoreCase(name)) return true; - } + private void refreshList(List newGroups) { + groupsList.clear(); + groupsList.addAll(newGroups); - return false; - } + namesList.clear(); + newGroups.forEach(group -> { + if (group.getPlayers().isEmpty()) return; - private void refreshList(List a) { - genyo = a; - } - - public static ListPlayer get(String name) { - for (ListPlayer player : genyo) { - if (player == null) return null; - - if (player.name.equalsIgnoreCase(name)) { - return player; - } - } - - return null; - } - - public boolean isInList(String name) { - return get(name) != null; + group.getPlayers().forEach(player -> { + namesList.add(player.getName()); + }); + }); } public static ListPlayer createListPlayer(String name) { diff --git a/src/main/java/com/genyo/addon/screens/ListGroupScreen.java b/src/main/java/com/genyo/addon/screens/ListGroupScreen.java new file mode 100644 index 0000000..36f70c5 --- /dev/null +++ b/src/main/java/com/genyo/addon/screens/ListGroupScreen.java @@ -0,0 +1,148 @@ +package com.genyo.addon.screens; + +import com.genyo.addon.modules.GenyoWelcome; +import com.genyo.addon.settings.playerlist.ListGroupSetting; +import com.genyo.addon.settings.playerlist.PLGroup; +import meteordevelopment.meteorclient.gui.GuiTheme; +import meteordevelopment.meteorclient.gui.WindowScreen; +import meteordevelopment.meteorclient.gui.widgets.WWidget; +import meteordevelopment.meteorclient.gui.widgets.containers.WHorizontalList; +import meteordevelopment.meteorclient.gui.widgets.containers.WTable; +import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; +import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; +import meteordevelopment.meteorclient.gui.widgets.pressable.WMinus; +import meteordevelopment.meteorclient.gui.widgets.pressable.WPlus; +import meteordevelopment.meteorclient.utils.network.MeteorExecutor; +import net.minecraft.client.gui.screen.Screen; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +public class ListGroupScreen extends WindowScreen { + + protected final ListGroupSetting setting; + private WTable table; + protected final int index; + private PLGroup currentGroup; + protected final Screen beforeScreen; + + public ListGroupScreen(GuiTheme theme, ListGroupSetting setting, int index, Screen beforeScreen) { + super(theme, "Edit " + setting.get().get(index).getGroupName()); + + this.index = index; + this.setting = setting; + currentGroup = setting.get().get(index); + this.beforeScreen = beforeScreen; + } + + @Override + public void initWidgets() { + table = add(theme.table()).expandX().minWidth(400).widget(); + + table.add(theme.label("Group Name")).widget(); + WTextBox textBox = table.add(theme.textBox(currentGroup.getGroupName())).expandX().widget(); + textBox.action = () -> currentGroup.setGroupName(textBox.get()); + textBox.actionOnUnfocused = this::confirmChanges; + + table.row(); + + table.add(theme.label("Message")).widget(); + WTextBox messageTB = table.add(theme.textBox(currentGroup.getMessage())).expandX().widget(); + messageTB.action = () -> currentGroup.setMessage(messageTB.get()); + messageTB.actionOnUnfocused = this::confirmChanges; + + table.row(); + table.add(theme.horizontalSeparator()).expandX(); + table.row(); + + initTable(table); + + // New + WHorizontalList list = table.add(theme.horizontalList()).expandX().widget(); + + WTextBox nameW = list.add(theme.textBox("", (text, c) -> c != ' ')).expandX().widget(); + nameW.setFocused(true); + + WPlus add = list.add(theme.plus()).widget(); + add.action = () -> { + String name = nameW.get().trim(); + if (name.equalsIgnoreCase("")) return; + + //PLGroup currentGroup = setting.get().get(index); + + GenyoWelcome.ListPlayer player = GenyoWelcome.createListPlayer(name); + if (currentGroup.containsPlayer(player)) { // it already exists + nameW.set(""); + return; + } + + nameW.set(""); + + currentGroup.addPlayer(player); + + confirmChanges(); + }; + + enterAction = add.action; + + table.row(); + + WButton save = table.add(theme.button("Save")).expandX().widget(); + save.action = () -> { + confirmChanges(); + mc.setScreen(beforeScreen); + }; + } + + private void initTable(WTable table) { + if (setting.get().isEmpty()) return; + + currentGroup.getPlayers().forEach(player -> + MeteorExecutor.execute(() -> { + if (player == null) { + currentGroup.removePlayer(player); + confirmChanges(); + return; + } + if (player.headTextureNeedsUpdate()) { + player.updateInfo(); + reload(); + } + }) + ); + + for (GenyoWelcome.ListPlayer player : currentGroup.getPlayers()) { + if (player == null) { + currentGroup.removePlayer(player); + confirmChanges(); + return; + } + table.add(theme.texture(32, 32, player.getHead().needsRotate() ? 90 : 0, player.getHead())); + table.add(theme.label(player.getName())); + + WMinus remove = table.add(theme.minus()).expandCellX().right().widget(); + remove.action = () -> { + currentGroup.removePlayer(player); + + confirmChanges(); + table.clear(); + }; + + table.row(); + } + } + + private void confirmChanges() { + setting.get().set(index, currentGroup); + MeteorExecutor.execute(this::reload); + setting.onChanged(); + } + + protected WWidget getValueWidget(GenyoWelcome.ListPlayer value) { + return theme.label(getValueName(value)); + } + + protected String getValueName(GenyoWelcome.ListPlayer value) { + return value.getName(); + } + +} diff --git a/src/main/java/com/genyo/addon/screens/PlayerListScreen.java b/src/main/java/com/genyo/addon/screens/PlayerListScreen.java deleted file mode 100644 index b578c77..0000000 --- a/src/main/java/com/genyo/addon/screens/PlayerListScreen.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.genyo.addon.screens; - -import com.genyo.addon.modules.GenyoWelcome; -import com.genyo.addon.settings.PlayerListSetting; -import meteordevelopment.meteorclient.gui.GuiTheme; -import meteordevelopment.meteorclient.gui.WindowScreen; -import meteordevelopment.meteorclient.gui.widgets.WWidget; -import meteordevelopment.meteorclient.gui.widgets.containers.WHorizontalList; -import meteordevelopment.meteorclient.gui.widgets.containers.WTable; -import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; -import meteordevelopment.meteorclient.gui.widgets.pressable.WMinus; -import meteordevelopment.meteorclient.gui.widgets.pressable.WPlus; -import meteordevelopment.meteorclient.utils.network.MeteorExecutor; - -public class PlayerListScreen extends WindowScreen { - - protected final PlayerListSetting setting; - private WTable table; - - public PlayerListScreen(GuiTheme theme, String title, PlayerListSetting setting) { - super(theme, title); - - this.setting = setting; - } - - @Override - public void initWidgets() { - table = add(theme.table()).expandX().minWidth(400).widget(); - - initTable(table); - - // New - WHorizontalList list = add(theme.horizontalList()).expandX().widget(); - - WTextBox nameW = list.add(theme.textBox("", (text, c) -> c != ' ')).expandX().widget(); - nameW.setFocused(true); - - WPlus add = list.add(theme.plus()).widget(); - add.action = () -> { - String name = nameW.get().trim(); - if (name.equalsIgnoreCase("")) return; - if (setting.get(name) != null) { // it already exists - nameW.set(""); - return; - } - - GenyoWelcome.ListPlayer player = GenyoWelcome.createListPlayer(name); - nameW.set(""); - setting.get().add(player); - - //player.updateInfo(); - MeteorExecutor.execute(this::reload); - - setting.onChanged(); - //table.clear(); - }; - - enterAction = add.action; - } - - private void initTable(WTable table) { - table.clear(); - if (setting.get().isEmpty()) return; - - setting.get().forEach(player -> - MeteorExecutor.execute(() -> { - if (player == null) { - setting.get().remove(player); - return; - } - if (player.headTextureNeedsUpdate()) { - player.updateInfo(); - reload(); - } - }) - ); - - for (GenyoWelcome.ListPlayer player : setting.get()) { - if (player == null) { - setting.get().remove(player); - return; - } - table.add(theme.texture(32, 32, player.getHead().needsRotate() ? 90 : 0, player.getHead())); - table.add(theme.label(player.getName())); - - WMinus remove = table.add(theme.minus()).expandCellX().right().widget(); - remove.action = () -> { - setting.get().remove(player); - - setting.onChanged(); - table.clear(); - reload(); - }; - - table.row(); - } - } - - protected WWidget getValueWidget(GenyoWelcome.ListPlayer value) { - return theme.label(getValueName(value)); - } - - protected String getValueName(GenyoWelcome.ListPlayer value) { - return value.getName(); - } - -} diff --git a/src/main/java/com/genyo/addon/settings/PlayerListSetting.java b/src/main/java/com/genyo/addon/settings/PlayerListSetting.java deleted file mode 100644 index c3d6dc0..0000000 --- a/src/main/java/com/genyo/addon/settings/PlayerListSetting.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.genyo.addon.settings; - -import com.genyo.addon.modules.GenyoWelcome; -import meteordevelopment.meteorclient.settings.IVisible; -import meteordevelopment.meteorclient.settings.Setting; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.function.Consumer; - -public class PlayerListSetting extends Setting> { - - public PlayerListSetting(String name, String description, List defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IVisible visible) { - super(name, description, defaultValue, onChanged, onModuleActivated, visible); - } - - @Override - protected List parseImpl(String str) { - String[] values = str.split(","); - List players = new ArrayList<>(values.length); - - try { - for (String value : values) { - if (GenyoWelcome.get(value) != null) players.add(GenyoWelcome.get(value)); - } - } catch (Exception ignored) {} - - return players; - } - - @Override - public void resetImpl() { - value = new ArrayList<>(defaultValue); - } - - public GenyoWelcome.ListPlayer get(String name) { - for (GenyoWelcome.ListPlayer player : get()) { - if (player.name.equalsIgnoreCase(name)) return player; - } - - return null; - } - - @Override - protected boolean isValueValid(List value) { - return true; - } - - @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); - for (GenyoWelcome.ListPlayer player : get()) { - valueTag.add(NbtString.of(player.getName())); - } - tag.put("value", valueTag); - - return tag; - } - - @Override - public List load(NbtCompound tag) { - get().clear(); - - NbtList valueTag = tag.getList("value", 8); - for (NbtElement tagI : valueTag) { - GenyoWelcome.ListPlayer player = GenyoWelcome.createListPlayer(tagI.asString()); - - get().add(player); - } - - return get(); - } - - public static class Builder extends SettingBuilder, PlayerListSetting> { - public Builder() { - super(new ArrayList<>(0)); - } - - public Builder defaultValue(GenyoWelcome.ListPlayer... defaults) { - return defaultValue(defaults != null ? Arrays.asList(defaults) : new ArrayList<>()); - } - - @Override - public PlayerListSetting build() { - return new PlayerListSetting(name, description, defaultValue, onChanged, onModuleActivated, visible); - } - } - - -} diff --git a/src/main/java/com/genyo/addon/settings/playerlist/ListGroupSetting.java b/src/main/java/com/genyo/addon/settings/playerlist/ListGroupSetting.java new file mode 100644 index 0000000..6c2fa01 --- /dev/null +++ b/src/main/java/com/genyo/addon/settings/playerlist/ListGroupSetting.java @@ -0,0 +1,190 @@ +package com.genyo.addon.settings.playerlist; + +import com.genyo.addon.GenyoAddon; +import com.genyo.addon.modules.GenyoWelcome; +import com.genyo.addon.screens.ListGroupScreen; +import meteordevelopment.meteorclient.gui.GuiTheme; +import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; +import meteordevelopment.meteorclient.gui.widgets.containers.WTable; +import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; +import meteordevelopment.meteorclient.gui.widgets.pressable.WMinus; +import meteordevelopment.meteorclient.settings.IVisible; +import meteordevelopment.meteorclient.settings.Setting; +import net.minecraft.nbt.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.Consumer; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +public class ListGroupSetting extends Setting> { + + public ListGroupSetting(String name, String description, List defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IVisible visible) { + super(name, description, defaultValue, onChanged, onModuleActivated, visible); + } + + public static void fillTable(GuiTheme theme, WTable table, ListGroupSetting setting) { + table.clear(); + + ArrayList groups = new ArrayList<>(setting.get()); + + for (int i = 0; i < setting.get().size(); i++) { + int currentIndex = i; + table.add(theme.label(groups.get(i).getGroupName())).widget(); + WButton button = table.add(theme.button("Edit Group")).expandX().widget(); + //WCheckbox toggle = table.add(theme.checkbox(true)).widget(); + button.action = () -> { + mc.setScreen(new ListGroupScreen(theme, setting, currentIndex, mc.currentScreen)); + }; + + WMinus delete = table.add(theme.minus()).widget(); + delete.action = () -> { + groups.remove(currentIndex); + setting.set(groups); + + fillTable(theme, table, setting); + }; + + table.row(); + } + + if (!setting.get().isEmpty()) { + table.add(theme.horizontalSeparator()).expandX(); + table.row(); + } + + WButton add = table.add(theme.button("Add Group")).expandX().widget(); + add.action = () -> { + int currentNew = groups.size() + 1; + String newName = "Group " + currentNew; + groups.add(new PLGroup(newName, "asd", new ArrayList())); + setting.set(groups); + + fillTable(theme, table, setting); + }; + + WButton reset = table.add(theme.button(GuiRenderer.RESET)).widget(); + reset.action = () -> { + setting.reset(); + + fillTable(theme, table, setting); + }; + } + + @Override + protected List parseImpl(String s) { + String[] values = s.split(","); + GenyoAddon.LOG.info(Arrays.toString(values)); + return List.of(); + } + + @Override + protected boolean isValueValid(List plGroups) { + return true; + } + + @Override + protected NbtCompound save(NbtCompound tag) { + NbtList indexes = new NbtList(); + if (get().isEmpty()) { + indexes.add(null); + tag.put("indexes", indexes); + tag.put("message", null); + tag.put("players", null); + + GenyoAddon.LOG.info("saved with empty"); + GenyoAddon.LOG.info(tag.toString()); + return tag; + } else { + for (int i = 0; i < get().size(); i++) { + indexes.add(NbtInt.of(i)); + } + } + + tag.put("indexes", indexes); + + NbtList groupNames = new NbtList(); + NbtList messages = new NbtList(); + NbtList players = new NbtList(); + + for (int i = 0; i < indexes.size(); i++) { + groupNames.add(i, NbtString.of(get().get(i).getGroupName())); + messages.add(i, NbtString.of(get().get(i).getMessage())); + NbtList playerNames = new NbtList(); + get().get(i).getPlayers().forEach(player -> { + playerNames.add(NbtString.of(player.getName())); + }); + players.addElement(i, playerNames); + } + + tag.put("group_names", groupNames); + tag.put("messages", messages); + tag.put("players", players); + + GenyoAddon.LOG.info("saveee"); + GenyoAddon.LOG.info(tag.toString()); + return tag; + } + + @Override + protected List load(NbtCompound tag) { + get().clear(); + GenyoAddon.LOG.info(tag.toString()); + NbtList nbtIndexes = (NbtList) tag.get("indexes"); + if (nbtIndexes.isEmpty()) { + GenyoAddon.LOG.info("nem jo"); + return get(); + } + + GenyoAddon.LOG.info("loadddddd"); + + ArrayList indexes = new ArrayList<>(); + for (NbtElement tagIndex : (NbtList) tag.get("indexes")) { + NbtInt index = (NbtInt) tagIndex; + indexes.add(index.intValue()); + } + + NbtList groupNames = (NbtList) tag.get("group_names"); + NbtList messages = (NbtList) tag.get("messages"); + for (int i = 0; i < indexes.size(); i++) { + String msg = messages.get(i).asString(); + String groupName = groupNames.get(i).asString(); + + List players = new ArrayList<>(); + NbtList playersList = (NbtList) tag.get("players"); + + for (NbtElement val : playersList) { + NbtList currentPlayers = (NbtList) playersList.get(i); + currentPlayers.forEach(player -> { + GenyoWelcome.ListPlayer listPlayer = GenyoWelcome.createListPlayer(player.asString()); + players.add(listPlayer); + }); + } + + PLGroup newGroup = new PLGroup(groupName, msg, players); + GenyoAddon.LOG.info(newGroup.toString()); + get().add(newGroup); + } + + return get(); + } + + public static class Builder extends SettingBuilder, ListGroupSetting> { + public Builder() { + super(new ArrayList<>(0)); + } + + public Builder defaultValue(PLGroup... defaults) { + return defaultValue(defaults != null ? Arrays.asList(defaults) : new ArrayList<>()); + } + + @Override + public ListGroupSetting build() { + return new ListGroupSetting(name, description, defaultValue, onChanged, onModuleActivated, visible); + } + } + + +} diff --git a/src/main/java/com/genyo/addon/settings/playerlist/PLGroup.java b/src/main/java/com/genyo/addon/settings/playerlist/PLGroup.java new file mode 100644 index 0000000..b27ae63 --- /dev/null +++ b/src/main/java/com/genyo/addon/settings/playerlist/PLGroup.java @@ -0,0 +1,71 @@ +package com.genyo.addon.settings.playerlist; + +import com.genyo.addon.modules.GenyoWelcome; + +import java.util.List; + +public class PLGroup { + + private volatile String message; + private volatile List players; + private volatile String name; + + public PLGroup(String name, String message, List players) { + this.name = name; + this.message = message; + this.players = players; + } + + public boolean containsPlayer(GenyoWelcome.ListPlayer player) { + for (GenyoWelcome.ListPlayer listPlayer : players) { + if (listPlayer.getName().equals(player.getName())) { + return true; + } + } + + return false; + } + + public boolean containsPlayer(String name) { + for (GenyoWelcome.ListPlayer listPlayer : players) { + if (listPlayer.getName().equals(name)) { + return true; + } + } + + return false; + } + + public String getGroupName() { + return name; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public List getPlayers() { + return players; + } + + public void setGroupName(String newName) { + this.name = newName; + } + + public void setPlayers(List players) { + this.players = players; + } + + public void addPlayer(GenyoWelcome.ListPlayer player) { + players.add(player); + } + + public void removePlayer(GenyoWelcome.ListPlayer player) { + players.remove(player); + } + +}