Skip to content

Commit a29fdc7

Browse files
authored
Merge pull request #2 from VLTNOgithub/beta
Beta yayayayayayayyaayyay
2 parents 1e4cb4a + 10ac3f3 commit a29fdc7

6 files changed

Lines changed: 256 additions & 64 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ yarn_mappings=1.21.1+build.3
99
loader_version=0.16.10
1010

1111
# Mod Properties
12-
mod_version=1.7.1
12+
mod_version=1.7.2-beta
1313
maven_group=com.vltno.timeloop
1414
archives_base_name=time-loop
1515

src/main/java/com/vltno/timeloop/Commands.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.mojang.brigadier.CommandDispatcher;
44
import com.mojang.brigadier.arguments.BoolArgumentType;
55
import com.mojang.brigadier.arguments.IntegerArgumentType;
6+
import com.mojang.brigadier.arguments.StringArgumentType;
67
import net.minecraft.command.CommandRegistryAccess;
78
import net.minecraft.server.command.CommandManager;
89
import net.minecraft.server.command.ServerCommandSource;
@@ -137,6 +138,20 @@ public void register(CommandDispatcher<ServerCommandSource> dispatcher, CommandR
137138
LOGGER.info("Time of day set to {}", newTime);
138139
return 1;
139140
})))
141+
142+
.then(CommandManager.literal("modifyPlayer")
143+
.requires(source -> source.hasPermissionLevel(2))
144+
.then(CommandManager.argument("targetPlayer", StringArgumentType.string())
145+
.then(CommandManager.argument("newName", StringArgumentType.string())
146+
.then(CommandManager.argument("newSkin", StringArgumentType.string())
147+
.executes(context -> {
148+
String targetPlayer = StringArgumentType.getString(context, "targetPlayer");
149+
String newName = StringArgumentType.getString(context, "newName");
150+
String newSkin = StringArgumentType.getString(context, "newSkin");
151+
152+
mod.modifyPlayerAttributes(targetPlayer, newName, newSkin);
153+
return 1;
154+
})))))
140155

141156
// TOGGLES
142157
.then(CommandManager.literal("toggles")
@@ -240,8 +255,11 @@ public void register(CommandDispatcher<ServerCommandSource> dispatcher, CommandR
240255
mod.config.displayTimeInTicks = false;
241256

242257
mod.executeCommand("mocap playback stop_all");
243-
mod.executeCommand(String.format("mocap scenes remove %s", mod.sceneName));
244-
mod.executeCommand(String.format("mocap scenes add %s", mod.sceneName));
258+
mod.loopSceneManager.forEachPlayerSceneName(playerSceneName -> {
259+
mod.executeCommand(String.format("mocap scenes remove %s", playerSceneName));
260+
mod.executeCommand(String.format("mocap scenes add %s", playerSceneName));
261+
});
262+
245263
mod.loopIteration = 0;
246264
mod.config.loopIteration = 0;
247265
mod.config.save();
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.vltno.timeloop;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.function.Consumer;
8+
9+
public class LoopSceneManager {
10+
private TimeLoopConfig config;
11+
private String scenePrefix;
12+
private Map<String, PlayerData> recordingPlayers;
13+
14+
15+
16+
// Constructor to initialize recordingPlayers map
17+
public LoopSceneManager(TimeLoopConfig config) {
18+
this.config = config;
19+
this.scenePrefix = config.scenePrefix;
20+
this.recordingPlayers = new HashMap<>();
21+
}
22+
23+
// Method to add a player to the recordingPlayers map
24+
public void addPlayer(List<String> args) {
25+
String playerName = args.get(0);
26+
List<String> nickname = args.size() > 1 ? args.subList(1, args.size()) : null;
27+
List<String> skin = args.size() > 2 ? args.subList(2, args.size()) : null;
28+
29+
if (playerName != null && !playerName.isEmpty()) {
30+
String tempNickname = (nickname == null || nickname.isEmpty()) ? playerName : nickname.getFirst();
31+
String tempSkin = (skin == null || skin.isEmpty()) ? playerName : skin.getFirst();
32+
33+
// Use player name as the key and store a PlayerData object
34+
recordingPlayers.put(playerName, new PlayerData(playerName, tempNickname, tempSkin));
35+
} else {
36+
System.out.println("Invalid player data. Player not added.");
37+
}
38+
}
39+
40+
41+
// Method to remove a specific player from the recordingPlayers map
42+
public void removePlayer(String playerName) {
43+
if (playerName != null && !playerName.isEmpty()) {
44+
PlayerData removed = recordingPlayers.remove(playerName);
45+
if (removed != null) {
46+
System.out.println("Player '" + playerName + "' removed successfully.");
47+
} else {
48+
System.out.println("Player '" + playerName + "' not found in the list.");
49+
}
50+
} else {
51+
System.out.println("Invalid player name. Player not removed.");
52+
}
53+
}
54+
55+
56+
// Method to generate playerSceneName for a given player
57+
public String getPlayerSceneName(String playerName) {
58+
return (playerName.startsWith(scenePrefix)) ? playerName : (scenePrefix + "_" + playerName).toLowerCase();
59+
}
60+
61+
// Method to get all playerSceneNames for recordingPlayers
62+
public List<String> getAllPlayerSceneNames() {
63+
List<String> playerSceneNames = new ArrayList<>();
64+
for (PlayerData player : recordingPlayers.values()) {
65+
playerSceneNames.add(getPlayerSceneName(player.getName()));
66+
}
67+
return playerSceneNames;
68+
}
69+
70+
public void forEachPlayerSceneName(Consumer<String> action) {
71+
getAllPlayerSceneNames().forEach(action);
72+
}
73+
74+
// Method to perform an action for each recording player
75+
public void forEachRecordingPlayer(Consumer<PlayerData> action) {
76+
recordingPlayers.values().forEach(action);
77+
}
78+
79+
// Method to set recording players with a new map
80+
public void setRecordingPlayers(Map<String, PlayerData> recordingPlayers) {
81+
this.recordingPlayers = recordingPlayers;
82+
}
83+
84+
public void saveRecordingPlayers() {
85+
config.recordingPlayers = new HashMap<>(recordingPlayers);
86+
}
87+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.vltno.timeloop;
2+
3+
public class PlayerData {
4+
private String name;
5+
private String nickname;
6+
private String skin;
7+
8+
public PlayerData(String name, String nickname, String skin) {
9+
this.name = name;
10+
this.nickname = nickname;
11+
this.skin = skin;
12+
}
13+
14+
// Getters and setters for player attributes
15+
public String getName() {
16+
return name;
17+
}
18+
19+
public String getNickname() {
20+
return nickname;
21+
}
22+
23+
public void setNickname(String nickname) {
24+
this.nickname = nickname;
25+
}
26+
27+
public String getSkin() {
28+
return skin;
29+
}
30+
31+
public void setSkin(String skin) {
32+
this.skin = skin;
33+
}
34+
35+
@Override
36+
public String toString() {
37+
return "PlayerData{" +
38+
"name='" + name + '\'' +
39+
", nickname='" + nickname + '\'' +
40+
", skin='" + skin + '\'' +
41+
'}';
42+
}
43+
}

0 commit comments

Comments
 (0)