Skip to content

Commit

Permalink
Merge pull request #48 from kxtsoo/main
Browse files Browse the repository at this point in the history
SkinRestorer integration (not working on client side)
  • Loading branch information
Matt-MX authored Jan 10, 2025
2 parents d203a4d + 3d6e81e commit 8082a4a
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 3 deletions.
10 changes: 10 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ repositories {
maven("https://repo.codemc.io/repository/maven-releases/")
maven("https://maven.evokegames.gg/snapshots")
maven("https://repo.viaversion.com")
maven("https://repo.codemc.org/repository/maven-public/") {
name = "codemc"
}
}

dependencies {
Expand All @@ -36,6 +39,7 @@ dependencies {
compileOnly(libs.packet.events)
implementation(libs.entity.lib)
testImplementation("org.junit.jupiter:junit-jupiter:5.7.1")
compileOnly("net.skinsrestorer:skinsrestorer-api:15.5.1")
}

tasks {
Expand Down
3 changes: 0 additions & 3 deletions src/main/java/com/mattmx/nametags/EventsListener.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package com.mattmx.nametags;

import com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent;
import com.mattmx.nametags.entity.NameTagEntity;
import com.mattmx.nametags.entity.trait.SneakTrait;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityRemoveEvent;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/mattmx/nametags/NameTags.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.mattmx.nametags.config.TextFormatter;
import com.mattmx.nametags.entity.NameTagEntityManager;
import com.mattmx.nametags.hook.NeznamyTABHook;
import com.mattmx.nametags.hook.SkinRestorerHook;
import me.tofaa.entitylib.APIConfig;
import me.tofaa.entitylib.EntityLib;
import me.tofaa.entitylib.spigot.SpigotEntityLibPlatform;
Expand Down Expand Up @@ -56,6 +57,7 @@ public void onEnable() {
// packetEvents.getEventManager().registerListener(new GlowingEffectHook());

NeznamyTABHook.inject(this);
SkinRestorerHook.inject(this);

Bukkit.getPluginManager().registerEvents(eventsListener, this);

Expand Down
69 changes: 69 additions & 0 deletions src/main/java/com/mattmx/nametags/hook/SkinRestorerHook.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.mattmx.nametags.hook;

import com.mattmx.nametags.NameTags;
import com.mattmx.nametags.entity.NameTagEntity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.skinsrestorer.api.SkinsRestorer;
import net.skinsrestorer.api.SkinsRestorerProvider;
import net.skinsrestorer.api.event.SkinApplyEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;

public class SkinRestorerHook {

public static void inject(@NotNull NameTags plugin) {
Bukkit.getScheduler().runTask(plugin, SkinRestorerHook::start);
}

private static void start() {
final boolean isSkinRestorer = Bukkit.getPluginManager().isPluginEnabled("SkinsRestorer");

if (!isSkinRestorer) return;

NameTags plugin = NameTags.getInstance();
SkinsRestorer skinsRestorer = SkinsRestorerProvider.get();

if (skinsRestorer != null) {
plugin.getLogger().info("Registering SkinRestorer event listeners.");
skinsRestorer.getEventBus().subscribe(plugin, SkinApplyEvent.class, SkinRestorerHook::onSkinApply);
} else {
plugin.getLogger().warning("SkinsRestorer is enabled, but the API provider is null.");
}
}

private static void onSkinApply(SkinApplyEvent event) {
Player player = event.getPlayer(Player.class);

if (player == null) return;

new BukkitRunnable() {
@Override
public void run() {
NameTags plugin = NameTags.getInstance();

plugin.getEntityManager().removeLastSentPassengersCache(player.getEntityId());

NameTagEntity entity = plugin.getEntityManager().removeEntity(player);

if (entity != null) {
entity.destroy();
}

NameTagEntity newEntity = plugin.getEntityManager().getOrCreateNameTagEntity(player);
newEntity.updateVisibility();
newEntity.updateLocation();

if (plugin.getConfig().getBoolean("show-self", false)) {
newEntity.getPassenger().removeViewer(newEntity.getBukkitEntity().getUniqueId());
newEntity.getPassenger().addViewer(newEntity.getBukkitEntity().getUniqueId());
newEntity.sendPassengerPacket(event.getPlayer(Player.class));

player.sendMessage(Component.text("Please re-join for update your nametag!").color(NamedTextColor.GREEN));
}
}
}.runTask(NameTags.getInstance());
}
}
1 change: 1 addition & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ depend:
softdepend:
- PlaceholderAPI
- TAB
- SkinsRestorer

commands:
nametags-reload:
Expand Down

0 comments on commit 8082a4a

Please sign in to comment.