From 0b8afb7b1082e8324c2429cd4010fc908c263208 Mon Sep 17 00:00:00 2001 From: APickledWalrus Date: Sun, 26 May 2024 16:10:54 -0400 Subject: [PATCH] Ensure thread safety for unloading --- LICENSE | 2 +- .../skript/elements/StructCustomPlaceholder.java | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/LICENSE b/LICENSE index 0fb69a1..7dd8c03 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) Patrick Miller +Copyright (c) 2024 Patrick Miller Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/io/github/apickledwalrus/skriptplaceholders/skript/elements/StructCustomPlaceholder.java b/src/main/java/io/github/apickledwalrus/skriptplaceholders/skript/elements/StructCustomPlaceholder.java index d259a99..12ca97b 100644 --- a/src/main/java/io/github/apickledwalrus/skriptplaceholders/skript/elements/StructCustomPlaceholder.java +++ b/src/main/java/io/github/apickledwalrus/skriptplaceholders/skript/elements/StructCustomPlaceholder.java @@ -122,9 +122,9 @@ public boolean load() { if (Bukkit.isPrimaryThread()) { registry.registerPlaceholder(plugin, placeholder, this); } else { - Bukkit.getScheduler().runTask(SkriptPlaceholders.getInstance(), () -> { - registry.registerPlaceholder(plugin, placeholder, this); - }); + Bukkit.getScheduler().runTask(SkriptPlaceholders.getInstance(), + () -> registry.registerPlaceholder(plugin, placeholder, this) + ); } return true; @@ -132,7 +132,14 @@ public boolean load() { @Override public void unload() { - registry.unregisterPlaceholder(plugin, placeholder, this); + // to be safe, ensure unregistering is done on the main thread too + if (Bukkit.isPrimaryThread()) { + registry.unregisterPlaceholder(plugin, placeholder, this); + } else { + Bukkit.getScheduler().runTask(SkriptPlaceholders.getInstance(), + () -> registry.unregisterPlaceholder(plugin, placeholder, this) + ); + } } @Override