Paper handle !
This commit is contained in:
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,6 +1,16 @@
|
|||||||
.idea/
|
.idea/
|
||||||
.gradle
|
.gradle
|
||||||
build/
|
build/
|
||||||
|
|
||||||
|
# Spigot
|
||||||
|
bukkit/build
|
||||||
|
!bukkit/build/libs/
|
||||||
|
|
||||||
|
# Paper
|
||||||
|
paper/run/
|
||||||
|
paper/build/
|
||||||
|
!paper/build/libs/
|
||||||
|
|
||||||
!gradle/wrapper/gradle-wrapper.jar
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
!**/src/main/**/build/
|
!**/src/main/**/build/
|
||||||
!**/src/test/**/build/
|
!**/src/test/**/build/
|
||||||
|
|||||||
@@ -12,3 +12,8 @@ commands:
|
|||||||
description: Base command
|
description: Base command
|
||||||
usage: /proximity mute <player>
|
usage: /proximity mute <player>
|
||||||
permission: lagoon.admin
|
permission: lagoon.admin
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
lagoon.admin:
|
||||||
|
description: Access to proximity admin commands
|
||||||
|
default: op
|
||||||
26
paper/build.gradle.kts
Normal file
26
paper/build.gradle.kts
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
plugins {
|
||||||
|
id("com.gradleup.shadow")
|
||||||
|
id("xyz.jpenilla.run-paper")
|
||||||
|
}
|
||||||
|
|
||||||
|
version = "1.0.0"
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly("io.papermc.paper:paper-api:1.21.11-R0.1-SNAPSHOT")
|
||||||
|
implementation(project(":commun"))
|
||||||
|
implementation(project(":bukkit"))
|
||||||
|
}
|
||||||
|
tasks.shadowJar {
|
||||||
|
archiveBaseName.set("LagoonPlugin")
|
||||||
|
archiveClassifier.set("")
|
||||||
|
archiveVersion.set(version.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.build {
|
||||||
|
dependsOn(tasks.shadowJar)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.runServer {
|
||||||
|
minecraftVersion("1.21.11")
|
||||||
|
runDirectory.set(file("run"))
|
||||||
|
}
|
||||||
53
paper/src/main/java/fr/redsavant/LagoonPlugin.java
Normal file
53
paper/src/main/java/fr/redsavant/LagoonPlugin.java
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
package fr.redsavant;
|
||||||
|
|
||||||
|
import fr.redsavant.commands.MuteCommand;
|
||||||
|
import fr.redsavant.proximity.PlayerCodeManager;
|
||||||
|
import fr.redsavant.proximity.ProximityListener;
|
||||||
|
import fr.redsavant.proximity.ProximityTask;
|
||||||
|
import fr.redsavant.ws.WebSocketClient;
|
||||||
|
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class LagoonPlugin extends BootstrapPlugin {
|
||||||
|
|
||||||
|
private WebSocketClient wsClient;
|
||||||
|
private ProximityTask proximityTask;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
saveDefaultConfig();
|
||||||
|
|
||||||
|
String roomCode = getConfig().getString("room-code", "CHANGE_ME");
|
||||||
|
URI wsUri = URI.create("wss://lagoon.under-scape.com/ws/rooms/" + roomCode + "/plugins/proximity");
|
||||||
|
|
||||||
|
PlayerCodeManager codeManager = new PlayerCodeManager();
|
||||||
|
Set<UUID> mutedPlayers = new HashSet<>();
|
||||||
|
wsClient = new WebSocketClient(wsUri, msg -> {
|
||||||
|
// future reponse de drewen
|
||||||
|
});
|
||||||
|
wsClient.connect();
|
||||||
|
|
||||||
|
getServer().getPluginManager().registerEvents(new ProximityListener(codeManager), this);
|
||||||
|
|
||||||
|
|
||||||
|
MuteCommand muteCommand = new MuteCommand(mutedPlayers);
|
||||||
|
getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, event -> {
|
||||||
|
event.registrar().register(muteCommand.build().build(), "Proximity commands");
|
||||||
|
});
|
||||||
|
|
||||||
|
proximityTask = new ProximityTask(wsClient, codeManager, mutedPlayers);
|
||||||
|
proximityTask.runTaskTimerAsynchronously(this, 20L, 60L);
|
||||||
|
|
||||||
|
getLogger().info("LagoonPlugin enabled — room: " + roomCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
if (proximityTask != null) proximityTask.cancel();
|
||||||
|
if (wsClient != null) wsClient.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
53
paper/src/main/java/fr/redsavant/commands/MuteCommand.java
Normal file
53
paper/src/main/java/fr/redsavant/commands/MuteCommand.java
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
package fr.redsavant.commands;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||||
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
|
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||||
|
import io.papermc.paper.command.brigadier.Commands;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class MuteCommand {
|
||||||
|
|
||||||
|
private final Set<UUID> mutedPlayers;
|
||||||
|
|
||||||
|
public MuteCommand(Set<UUID> mutedPlayers) {
|
||||||
|
this.mutedPlayers = mutedPlayers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public com.mojang.brigadier.builder.LiteralArgumentBuilder<CommandSourceStack> build() {
|
||||||
|
return Commands.literal("proximity")
|
||||||
|
.requires(ctx -> ctx.getSender().hasPermission("lagoon.admin"))
|
||||||
|
.then(
|
||||||
|
Commands.literal("mute")
|
||||||
|
.then(
|
||||||
|
Commands.argument("player", StringArgumentType.word())
|
||||||
|
.executes(this::executeMute)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int executeMute(CommandContext<CommandSourceStack> ctx) {
|
||||||
|
var sender = ctx.getSource().getSender();
|
||||||
|
String playerName = StringArgumentType.getString(ctx, "player");
|
||||||
|
|
||||||
|
Player target = Bukkit.getPlayerExact(playerName);
|
||||||
|
if (target == null) {
|
||||||
|
sender.sendMessage("§cUnknown player");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
UUID uuid = target.getUniqueId();
|
||||||
|
if (mutedPlayers.contains(uuid)) {
|
||||||
|
mutedPlayers.remove(uuid);
|
||||||
|
sender.sendMessage("§a" + target.getName() + " has been unmuted on Lagoon");
|
||||||
|
} else {
|
||||||
|
mutedPlayers.add(uuid);
|
||||||
|
sender.sendMessage("§e" + target.getName() + " has been muted on Lagoon");
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
20
paper/src/main/resources/paper-plugin.yml
Normal file
20
paper/src/main/resources/paper-plugin.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: LagoonPlugin
|
||||||
|
version: 1.0.0
|
||||||
|
description: A plugin to link proximity chat of Lagoon
|
||||||
|
website: https://lagoon.under-scape.com
|
||||||
|
authors:
|
||||||
|
- RedSavant
|
||||||
|
- UnderScape (lagoon)
|
||||||
|
api-version: '1.21'
|
||||||
|
main: fr.redsavant.LagoonPlugin
|
||||||
|
|
||||||
|
commands:
|
||||||
|
proximity:
|
||||||
|
description: Base command
|
||||||
|
usage: /proximity mute <player>
|
||||||
|
permission: lagoon.admin
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
lagoon.admin:
|
||||||
|
description: Access to proximity admin commands
|
||||||
|
default: op
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
rootProject.name = "Lagoon"
|
rootProject.name = "Lagoon"
|
||||||
|
|
||||||
include("commun", "bukkit")
|
include("commun", "bukkit", "paper")
|
||||||
Reference in New Issue
Block a user