Paper handle !
This commit is contained in:
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,6 +1,16 @@
|
||||
.idea/
|
||||
.gradle
|
||||
build/
|
||||
|
||||
# Spigot
|
||||
bukkit/build
|
||||
!bukkit/build/libs/
|
||||
|
||||
# Paper
|
||||
paper/run/
|
||||
paper/build/
|
||||
!paper/build/libs/
|
||||
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
@@ -11,4 +11,9 @@ commands:
|
||||
proximity:
|
||||
description: Base command
|
||||
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"
|
||||
|
||||
include("commun", "bukkit")
|
||||
include("commun", "bukkit", "paper")
|
||||
Reference in New Issue
Block a user