├── .gitignore
├── README.md
├── pom.xml
└── src
└── main
├── java
└── pene
│ └── gc
│ └── teammerge
│ ├── TeamMergeh.java
│ ├── commands
│ └── TeamMerge.java
│ └── utils
│ └── SettingEditor.java
└── resources
└── plugin.json
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
2 | !.mvn/wrapper/maven-wrapper.jar
3 | !**/src/main/**/target/
4 | !**/src/test/**/target/
5 |
6 | ### IntelliJ IDEA ###
7 | .idea/modules.xml
8 | .idea/jarRepositories.xml
9 | .idea/compiler.xml
10 | .idea/libraries/
11 | *.iws
12 | *.iml
13 | *.ipr
14 |
15 | ### Eclipse ###
16 | .apt_generated
17 | .classpath
18 | .factorypath
19 | .project
20 | .settings
21 | .springBeans
22 | .sts4-cache
23 |
24 | ### NetBeans ###
25 | /nbproject/private/
26 | /nbbuild/
27 | /dist/
28 | /nbdist/
29 | /.nb-gradle/
30 | build/
31 | !**/src/main/**/build/
32 | !**/src/test/**/build/
33 |
34 | ### VS Code ###
35 | .vscode/
36 |
37 | ### Mac OS ###
38 | .DS_Store
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # TeamMerge plugin
2 | ### Allows you to quickly make massive teams just by setting them as other party
3 |
4 |
5 | https://user-images.githubusercontent.com/81880849/181936815-bb72f3b6-d05f-40a0-a020-64f204ba98ba.mp4
6 |
7 |
8 | ## Usage:
9 | 1. Make party that you want in normal party slots (you can use all 4 teams, party order matters)
10 | 2. Use /tm or /party in in-game chat with server (or without "/" in console)
11 |
12 | **Optional:**
13 | Is you want to change something in current big party then go to party setup and click on quick setup, it should allow you to change characters and their order just by clicking on both of them and clicking them in reverse order.
14 |
15 | ## FAQ
16 |
17 | 1. How to install plugin?
18 | - Add the newest jar file from [here](https://github.com/Penelopeep/TeamMerge/releases), and put it in **GrasscutterFolder/Plugins** (make one if you don't have)
19 | 2. Plugin says that it can't change server settings:
20 | - Well, I added this as a safety measure, but I have no clue what could cause this. Just open **config.json**, press **ctrl+f** and search for **singlePlayerTeam**
21 | 3. After changing config.json I still can't make bigger parties
22 | - Dm me on discord **Penelopeep#7963** since in this case it will be probably error which don't occur on my pc.
23 | 4. Just use /team add
24 | - I'm lazy and I thought it's cooler, also it's easier because /team requires avatarId but plugin just takes it from game
25 | 5. Your error handling sucks
26 | - You're right, if you know how to make proper error handling or how to get data from **config.json** then make pull request or dm me on discord **Penelopeep#7963**
27 |
28 | ## Credits:
29 |
30 | - Grasscutter team for making PluginTemplate and Grasscutter itself
31 | - Me for everything else
32 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | pene.gc.teammerge
8 | TeamMerge
9 | 1
10 |
11 |
12 | 17
13 | 17
14 |
15 |
16 |
17 |
18 | xyz.grasscutters
19 | grasscutter
20 | 1.7.2
21 | system
22 | ${env.USERPROFILE}\Downloads\grasscutter-1.7.2.jar
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/main/java/pene/gc/teammerge/TeamMergeh.java:
--------------------------------------------------------------------------------
1 | package pene.gc.teammerge;
2 |
3 | import emu.grasscutter.plugin.Plugin;
4 |
5 | public final class TeamMergeh extends Plugin {
6 | private static TeamMergeh instance;
7 | public static TeamMergeh getInstance() {
8 | return instance;
9 | }
10 | @Override public void onLoad() {
11 | // Set the plugin instance.
12 | instance = this;
13 | }
14 | @Override public void onEnable() {
15 |
16 | // Register commands.
17 | this.getHandle().registerCommand(new pene.gc.teammerge.commands.TeamMerge());
18 |
19 | // Log a plugin status message.
20 | this.getLogger().info("The TeamMerge plugin has been enabled.");
21 | }
22 |
23 | @Override public void onDisable() {
24 | // Log a plugin status message.
25 | this.getLogger().info("The TeamMerge plugin has been disabled.");
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/pene/gc/teammerge/commands/TeamMerge.java:
--------------------------------------------------------------------------------
1 | package pene.gc.teammerge.commands;
2 |
3 | import emu.grasscutter.Grasscutter;
4 | import emu.grasscutter.command.Command;
5 | import emu.grasscutter.command.CommandHandler;
6 | import emu.grasscutter.game.avatar.Avatar;
7 | import emu.grasscutter.game.entity.EntityAvatar;
8 | import emu.grasscutter.game.player.Player;
9 | import pene.gc.teammerge.utils.SettingEditor;
10 |
11 | import java.util.List;
12 |
13 | @Command(label = "TeamMerge", aliases = {"party", "tm"})
14 | public final class TeamMerge implements CommandHandler {
15 | public int getTeamSize(Player targetPlayer){
16 | int TeamSize;
17 | if (targetPlayer.isInMultiplayer()) {
18 | TeamSize = Grasscutter.getConfig().server.game.gameOptions.avatarLimits.multiplayerTeam;
19 | }
20 | else {
21 | TeamSize = Grasscutter.getConfig().server.game.gameOptions.avatarLimits.singlePlayerTeam;
22 | }
23 | return TeamSize;
24 | }
25 | @Override
26 | public void execute(Player sender,Player targetPlayer, List args) {
27 | int TeamSize = getTeamSize(targetPlayer);
28 | int OldTeamSize = TeamSize; //I'll use it someday
29 | if (TeamSize==2 || TeamSize==4){
30 | SettingEditor.ChangeTeamSize(targetPlayer,40); //Size 40 since there's now maximum of 10 teams
31 | TeamSize=getTeamSize(targetPlayer);
32 | if (TeamSize==OldTeamSize){
33 | if(sender!=null){
34 | CommandHandler.sendMessage(sender,"TeamMerge couldn't change server setting");
35 | } else {
36 | Grasscutter.getLogger().error("TeamMerge couldn't change server setting");
37 | }
38 | }
39 | }
40 | for (int i = 1; i <= targetPlayer.getTeamManager().getTeams().size(); i++) {
41 | try {
42 | List tiAvatars = targetPlayer.getTeamManager().getTeams().get(i).getAvatars();
43 | for (int avatarid : tiAvatars) {
44 | int addChar = 0;
45 | List entityAvatarList = targetPlayer.getTeamManager().getActiveTeam();
46 | for (EntityAvatar entityAvatar : entityAvatarList) {
47 | if (entityAvatar.getAvatar().getAvatarId() == avatarid) {
48 | addChar += 1;
49 | }
50 | }
51 | if (addChar == 0) {
52 | Avatar avatar = targetPlayer.getAvatars().getAvatarById(avatarid);
53 | targetPlayer.getTeamManager().addAvatarToCurrentTeam(avatar);
54 | }
55 | }
56 | } catch (Exception e) {
57 | e.printStackTrace();
58 | }
59 | }
60 | if (sender != null) {
61 | if (targetPlayer.getTeamManager().getCurrentTeamInfo().size() == TeamSize) {
62 | CommandHandler.sendMessage(targetPlayer, "Characters couldn't be added to party, probably server config isn't changed");
63 | } else if (targetPlayer.getTeamManager().getCurrentTeamInfo().size() < TeamSize) {
64 | CommandHandler.sendMessage(targetPlayer, "Characters added to party");
65 | } else {
66 | CommandHandler.sendMessage(targetPlayer, "Unknown error, report this on plugin github/dm Penelopeep#7963");
67 | }
68 | }
69 | else{
70 | if (targetPlayer.getTeamManager().getCurrentTeamInfo().size() == TeamSize) {
71 | Grasscutter.getLogger().warn("Characters couldn't be added to party, probably server config isn't changed");
72 | } else if (targetPlayer.getTeamManager().getCurrentTeamInfo().size() < TeamSize) {
73 | Grasscutter.getLogger().info("Characters added to party");
74 | } else {
75 | Grasscutter.getLogger().error("Unknown error, report this on plugin github/dm Penelopeep#7963");
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/main/java/pene/gc/teammerge/utils/SettingEditor.java:
--------------------------------------------------------------------------------
1 | package pene.gc.teammerge.utils;
2 |
3 | import emu.grasscutter.Grasscutter;
4 | import emu.grasscutter.config.ConfigContainer;
5 | import emu.grasscutter.game.player.Player;
6 |
7 | public class SettingEditor {
8 | public static void ChangeTeamSize(Player targetplayer, int size){
9 | ConfigContainer newConfig = Grasscutter.getConfig();
10 | if (targetplayer.isInMultiplayer()){
11 | if (Grasscutter.getConfig().server.game.gameOptions.avatarLimits.multiplayerTeam