commit f74658db281bed8937cb154e68c5f8b1dbcdb56d Author: youhavetrouble Date: Sun Jun 18 02:51:33 2023 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c37caf --- /dev/null +++ b/.gitignore @@ -0,0 +1,118 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory +run/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..c6dbd46 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,49 @@ +plugins { + id 'java' + id 'io.papermc.paperweight.userdev' version("1.5.5") +} + +group = 'me.youhavetrouble' +version = '1.0' + +repositories { + mavenCentral() + maven { + name = "papermc-repo" + url = "https://repo.papermc.io/repository/maven-public/" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/groups/public/" + } +} + +dependencies { + paperweight.paperDevBundle("1.20-R0.1-SNAPSHOT") + compileOnly "io.papermc.paper:paper-api:1.20-R0.1-SNAPSHOT" +} + +def targetJavaVersion = 17 +java { + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } +} + +tasks.withType(JavaCompile).configureEach { + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + options.release = targetJavaVersion + } +} + +processResources { + def props = [version: version] + inputs.properties props + filteringCharset 'UTF-8' + filesMatching('paper-plugin.yml') { + expand props + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..02f683e --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..900c2b5 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'NotJustNameplates' diff --git a/src/main/java/me/youhavetrouble/notjustnameplates/NotJustNameplates.java b/src/main/java/me/youhavetrouble/notjustnameplates/NotJustNameplates.java new file mode 100644 index 0000000..f1024fb --- /dev/null +++ b/src/main/java/me/youhavetrouble/notjustnameplates/NotJustNameplates.java @@ -0,0 +1,17 @@ +package me.youhavetrouble.notjustnameplates; + +import org.bukkit.plugin.java.JavaPlugin; + +public final class NotJustNameplates extends JavaPlugin { + + @Override + public void onEnable() { + // Plugin startup logic + + } + + @Override + public void onDisable() { + // Plugin shutdown logic + } +} diff --git a/src/main/java/me/youhavetrouble/notjustnameplates/listeners/TeamManagementListener.java b/src/main/java/me/youhavetrouble/notjustnameplates/listeners/TeamManagementListener.java new file mode 100644 index 0000000..727e61a --- /dev/null +++ b/src/main/java/me/youhavetrouble/notjustnameplates/listeners/TeamManagementListener.java @@ -0,0 +1,69 @@ +package me.youhavetrouble.notjustnameplates.listeners; + +import me.youhavetrouble.notjustnameplates.teams.PacketTeam; +import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket; +import net.minecraft.world.scores.PlayerTeam; +import net.minecraft.world.scores.Scoreboard; +import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import java.util.HashSet; + +public class PlayerJoinLeaveListener implements Listener { + + private final Scoreboard scoreboard = new Scoreboard(); + private final PlayerTeam team = new PlayerTeam(scoreboard, "notjustnameplates"); + private final HashSet players = new HashSet<>(); + + public PlayerJoinLeaveListener() { + team.setNameTagVisibility(PlayerTeam.Visibility.NEVER); + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onPlayerJoin(PlayerJoinEvent event) { + Player joiner = event.getPlayer(); + for (Player player : event.getPlayer().getServer().getOnlinePlayers()) { + addPlayerToTeam(joiner, player); + } + PacketTeam.sendTeamMembers(joiner); + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onPlayerQuit(PlayerQuitEvent event) { + Player leaver = event.getPlayer(); + for (Player player : event.getPlayer().getServer().getOnlinePlayers()) { + removePlayerFromTeam(leaver, player); + } + } + + private void addPlayerToTeam(Player player, Player target) { + CraftPlayer craftPlayer = (CraftPlayer) target; + players.add(player.getName()); + + ClientboundSetPlayerTeamPacket teamCreatePacket = ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(team, true); + craftPlayer.getHandle().connection.send(teamCreatePacket); + + ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket.createPlayerPacket(team, player.getName(), ClientboundSetPlayerTeamPacket.Action.ADD); + + craftPlayer.getHandle().connection.send(packet); + } + + private void removePlayerFromTeam(Player player, Player target) { + ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket.createPlayerPacket(team, player.getName(), ClientboundSetPlayerTeamPacket.Action.REMOVE); + CraftPlayer craftPlayer = (CraftPlayer) target; + players.remove(player.getName()); + craftPlayer.getHandle().connection.send(packet); + } + + private void sendTeamMembers(Player target) { + ClientboundSetPlayerTeamPacket packet = ClientboundSetPlayerTeamPacket.createMultiplePlayerPacket(team, players, ClientboundSetPlayerTeamPacket.Action.ADD); + CraftPlayer craftPlayer = (CraftPlayer) target; + craftPlayer.getHandle().connection.send(packet); + } + +} diff --git a/src/main/java/me/youhavetrouble/notjustnameplates/nameplates/Nameplate.java b/src/main/java/me/youhavetrouble/notjustnameplates/nameplates/Nameplate.java new file mode 100644 index 0000000..ff96f30 --- /dev/null +++ b/src/main/java/me/youhavetrouble/notjustnameplates/nameplates/Nameplate.java @@ -0,0 +1,2 @@ +package me.youhavetrouble.notjustnameplates.nameplates;public class Nameplate { +} diff --git a/src/main/resources/paper-plugin.yml b/src/main/resources/paper-plugin.yml new file mode 100644 index 0000000..50de072 --- /dev/null +++ b/src/main/resources/paper-plugin.yml @@ -0,0 +1,7 @@ +name: NotJustNameplates +version: '${version}' +main: me.youhavetrouble.notjustnameplates.NotJustNameplates +api-version: 1.20 +authors: [YouHaveTrouble] +description: Nameplates using display entities +website: https://youhavetrouble.me