Skip to content

Commit 26c897d

Browse files
authored
Merge pull request #494 from Mindgamesnl/feature/new-media-engine
Feature/new media engine
2 parents ef96f59 + 55c7830 commit 26c897d

File tree

57 files changed

+1876
-1479
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1876
-1479
lines changed

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java adoptopenjdk-8.0.332+9
1+
java openjdk-21

OpenAudioMc/API/src/main/java/com/craftmend/openaudiomc/api/basic/Actor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,10 @@ public interface Actor {
3939
*/
4040
void sendMessage(String message);
4141

42+
/**
43+
* Get the "type" of actor. This is usually determined by the platform, and can be used to differentiate between players, console, etc.
44+
* @return the category of the actor
45+
*/
46+
ActorCategory getCategory();
47+
4248
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.craftmend.openaudiomc.api.basic;
2+
3+
public enum ActorCategory {
4+
5+
PLAYER,
6+
CONSOLE,
7+
UNKNOWN
8+
9+
}

OpenAudioMc/OA-PaperUserAdapter/src/main/java/com/craftmend/openaudiomc/integrations/user/ModernPaperUserAdapter.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.craftmend.openaudiomc.integrations.user;
22

3+
import com.craftmend.openaudiomc.api.basic.ActorCategory;
34
import com.craftmend.openaudiomc.api.user.User;
45
import net.md_5.bungee.api.ChatMessageType;
56
import net.md_5.bungee.api.chat.TextComponent;
@@ -26,6 +27,17 @@ public void sendMessage(String string) {
2627
}
2728
}
2829

30+
@Override
31+
public ActorCategory getCategory() {
32+
if (player instanceof Player) {
33+
return ActorCategory.PLAYER;
34+
}
35+
if (player instanceof org.bukkit.command.ConsoleCommandSender) {
36+
return ActorCategory.CONSOLE;
37+
}
38+
return ActorCategory.UNKNOWN;
39+
}
40+
2941
@Override
3042
public void sendClickableCommandMessage(String msgText, String hoverMessage, String command) {
3143
String[] lines = msgText.split("\\\\n");

OpenAudioMc/Plugin/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ import dev.s7a.gradle.minecraft.server.tasks.LaunchMinecraftServerTask
157157
["8", "1.8.8"],
158158
["12", "1.12.2"],
159159
["20", "1.20.4"],
160-
["21", "1.21.4"],
161-
["217", "1.21.7"]
160+
// ["21", "1.21.4"],
161+
["21", "1.21.7"]
162162
].each { name, version ->
163163
task("testPlugin$name", type: LaunchMinecraftServerTask) {
164164
dependsOn 'shadowJar' // Changed from 'build' to use the shaded jar

OpenAudioMc/Plugin/src/main/java/com/craftmend/openaudiomc/generic/commands/CommandService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public void invokeCommand(User<?> sender, CommandContext context, String[] args,
147147
}
148148
}
149149
} else {
150-
sender.sendMessage(MagicValue.COMMAND_PREFIX.get(String.class) + "You dont have the permissions to do this, sorry! (" + OpenAudioMc.getInstance().getPlatform() + ")");
150+
sender.sendMessage(MagicValue.COMMAND_PREFIX.get(String.class) + "You dont have the permissions to do this, sorry! (must be configured on your " + OpenAudioMc.getInstance().getPlatform().getReadableName() + ")");
151151
}
152152
} else {
153153
sender.sendMessage(MagicValue.COMMAND_PREFIX.get(String.class) + "Unknown sub command: " + args[0].toLowerCase());

OpenAudioMc/Plugin/src/main/java/com/craftmend/openaudiomc/generic/commands/interfaces/SubCommand.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ protected void message(User<?> sender, String message) {
7171
*/
7272
public boolean isAllowed(User<?> commandSender) {
7373
if (ignorePermissions) return true;
74+
return hasRequiredPermissions(commandSender);
75+
}
7476

77+
public boolean hasRequiredPermissions(User<?> commandSender) {
7578
return commandSender.hasPermission(permissionScope + command)
7679
|| commandSender.hasPermission(permissionScope + "*")
7780
|| commandSender.hasPermission("openaudiomc.*")

OpenAudioMc/Plugin/src/main/java/com/craftmend/openaudiomc/generic/commands/subcommands/AcceptSubCommand.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class AcceptSubCommand extends SubCommand {
1515

1616
public AcceptSubCommand() {
1717
super("accept");
18+
this.ignorePermissions = true;
1819
}
1920

2021
@Override
@@ -28,10 +29,12 @@ public void onExecute(User sender, String[] args) {
2829

2930
sender.sendMessage(MagicValue.COMMAND_PREFIX.get(String.class) + "Welcome to OpenAudioMc! you accepted the terms, enjoy the service!");
3031

31-
OpenAudioMc.resolveDependency(TaskService.class).runAsync(() -> service.connectIfDown());
32+
if (this.hasRequiredPermissions(sender)) {
33+
OpenAudioMc.resolveDependency(TaskService.class).runAsync(() -> service.connectIfDown());
3234

33-
for (ClientConnection client : service.getClients()) {
34-
client.getAuth().publishSessionUrl();
35+
for (ClientConnection client : service.getClients()) {
36+
client.getAuth().publishSessionUrl();
37+
}
3538
}
3639
}
3740
}

OpenAudioMc/Plugin/src/main/java/com/craftmend/openaudiomc/generic/commands/subcommands/LinkSubCommand.java

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.craftmend.openaudiomc.generic.commands.subcommands;
22

33
import com.craftmend.openaudiomc.OpenAudioMc;
4+
import com.craftmend.openaudiomc.api.basic.ActorCategory;
45
import com.craftmend.openaudiomc.generic.commands.helpers.PromptProxyError;
56
import com.craftmend.openaudiomc.generic.commands.interfaces.SubCommand;
67
import com.craftmend.openaudiomc.generic.commands.objects.Argument;
8+
import com.craftmend.openaudiomc.generic.logging.OpenAudioLogger;
79
import com.craftmend.openaudiomc.generic.networking.interfaces.NetworkingService;
810
import com.craftmend.openaudiomc.generic.platform.OaColor;
911
import com.craftmend.openaudiomc.generic.platform.interfaces.TaskService;
@@ -12,13 +14,19 @@
1214
import com.craftmend.openaudiomc.generic.rest.types.ClaimCodeResponse;
1315
import com.craftmend.openaudiomc.api.user.User;
1416

17+
import java.time.Duration;
18+
import java.time.Instant;
19+
1520
public class LinkSubCommand extends SubCommand {
1621

22+
private Instant lastLinkGeneration = Instant.MIN;
23+
1724
public LinkSubCommand() {
1825
super("link", "login", "account", "claim");
1926
registerArguments(
2027
new Argument("", "Generates a link for you to claim your account")
2128
);
29+
ignorePermissions = true;
2230
}
2331

2432
@Override
@@ -28,13 +36,56 @@ public void onExecute(User sender, String[] args) {
2836
return;
2937
}
3038

31-
// init connection so we receive the event
32-
OpenAudioMc.resolveDependency(TaskService.class).runAsync(() -> OpenAudioMc.getService(NetworkingService.class).connectIfDown());
39+
boolean isPlayer = sender.getCategory() == ActorCategory.PLAYER;
40+
boolean isPrivileged = hasRequiredPermissions(sender);
3341

34-
message(sender, OaColor.GRAY + "Generating link...");
42+
// if the sender is allowed, we can just enter normal behavior
43+
if (isPrivileged) {
44+
onExecutePrivileged(sender);
45+
return;
46+
}
3547

36-
RestRequest<ClaimCodeResponse> request = new RestRequest<>(ClaimCodeResponse.class, Endpoint.CLAIM_CODE);
48+
// if the sender is a player, but they likely do not understand how permissions work, we can give them a more friendly message
49+
if (isPlayer) {
50+
long minutesSinceLastGeneration = Duration.between(lastLinkGeneration, Instant.now()).toMinutes();
51+
52+
if (minutesSinceLastGeneration < 5) {
53+
message(sender, OaColor.RED + "You have to wait " + (5 - minutesSinceLastGeneration) + " more minute(s) before you can generate a new link.");
54+
return;
55+
}
56+
57+
lastLinkGeneration = Instant.now();
58+
message(sender, OaColor.GREEN + "Welcome to OpenAudioMc!");
59+
message(sender, OaColor.GRAY + "To get started, please go to the logs of your " + OpenAudioMc.getInstance().getPlatform().getReadableName() + " server");
60+
message(sender, OaColor.GRAY + "There, you will find a link to claim your account and get started.");
61+
62+
RestRequest<ClaimCodeResponse> request = new RestRequest<>(ClaimCodeResponse.class, Endpoint.CLAIM_CODE);
63+
request.runAsync()
64+
.thenAccept(state -> {
65+
if (state.hasError()) {
66+
message(sender, OaColor.RED + state.getError().getMessage());
67+
return;
68+
}
69+
70+
ClaimCodeResponse response = state.getResponse();
71+
String url = response.getClaimUrl();
3772

73+
OpenAudioLogger.info("============== [ OpenAudioMc ] ==============");
74+
OpenAudioLogger.info("To get started with OpenAudioMc, please visit the following link:");
75+
OpenAudioLogger.info(url);
76+
OpenAudioLogger.info("This link will allow you to claim your account and get started.");
77+
OpenAudioLogger.info("=============================================");
78+
});
79+
return;
80+
}
81+
82+
message(sender, OaColor.RED + "You do not have permission to execute this command. Please make sure you have admin permission on your " + OpenAudioMc.getInstance().getPlatform().getReadableName());
83+
}
84+
85+
private void onExecutePrivileged(User sender) {
86+
OpenAudioMc.resolveDependency(TaskService.class).runAsync(() -> OpenAudioMc.getService(NetworkingService.class).connectIfDown());
87+
message(sender, OaColor.GRAY + "Generating link...");
88+
RestRequest<ClaimCodeResponse> request = new RestRequest<>(ClaimCodeResponse.class, Endpoint.CLAIM_CODE);
3889
request.runAsync()
3990
.thenAccept(state -> {
4091
if (state.hasError()) {
@@ -53,7 +104,5 @@ public void onExecute(User sender, String[] args) {
53104
);
54105
sender.sendMessage(OaColor.GRAY + " >> or visit " + url);
55106
});
56-
57107
}
58-
59108
}

OpenAudioMc/Plugin/src/main/java/com/craftmend/openaudiomc/generic/platform/Platform.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,23 @@
66
import com.craftmend.openaudiomc.spigot.modules.players.objects.SpigotPlayerSelector;
77
import com.craftmend.openaudiomc.velocity.modules.player.objects.VelocityPlayerSelector;
88
import com.craftmend.openaudiomc.velocity.utils.VelocityChatColor;
9+
import lombok.Getter;
910

1011
public enum Platform {
1112

12-
UNKNOWN,
13-
SPIGOT,
14-
BUNGEE,
15-
VELOCITY,
16-
STANDALONE,
13+
UNKNOWN("Unknown"),
14+
SPIGOT("Minecraft Server"),
15+
BUNGEE("BuneeCord (proxy)"),
16+
VELOCITY("Velocity (proxy)"),
17+
STANDALONE("Standalone"),
1718
;
1819

20+
@Getter private final String readableName;
21+
22+
Platform(String readableName) {
23+
this.readableName = readableName;
24+
}
25+
1926
public static String translateColors(String input) {
2027
switch (OpenAudioMc.getInstance().getPlatform()) {
2128
case SPIGOT:

0 commit comments

Comments
 (0)