From 799a49a065a4f66ac5504cb3f4abe8c50d39fcb9 Mon Sep 17 00:00:00 2001 From: JFronny Date: Tue, 23 Apr 2024 20:54:08 +0200 Subject: [PATCH] style(data-manipulation): Use ScopedValue instead of map from thread ID to value --- .../manipulation/api/UserResourceEvents.java | 17 ++++++++--------- .../manipulation/impl/ResourcePackHook.java | 14 ++++---------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/api/UserResourceEvents.java b/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/api/UserResourceEvents.java index 308ea49..41faa6b 100644 --- a/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/api/UserResourceEvents.java +++ b/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/api/UserResourceEvents.java @@ -1,6 +1,8 @@ package io.gitlab.jfronny.libjf.data.manipulation.api; import io.gitlab.jfronny.commons.LazySupplier; +import io.gitlab.jfronny.commons.concurrent.ScopedValue; +import io.gitlab.jfronny.commons.throwable.ExceptionWrapper; import io.gitlab.jfronny.commons.throwable.ThrowingRunnable; import io.gitlab.jfronny.commons.throwable.ThrowingSupplier; import io.gitlab.jfronny.libjf.LibJf; @@ -19,20 +21,17 @@ import java.util.function.Supplier; public class UserResourceEvents { public static TVal disable(ThrowingSupplier then) throws TEx { try { - ResourcePackHook.setDisabled(true); - return then.get(); - } - finally { - ResourcePackHook.setDisabled(false); + return ScopedValue.getWhere(ResourcePackHook.DISABLED, true, then.orThrow()); + } catch (ExceptionWrapper ew) { + throw (TEx) ExceptionWrapper.unwrap(ew); } } public static void disable(ThrowingRunnable then) throws TEx { try { - ResourcePackHook.setDisabled(true); - then.run(); - } finally { - ResourcePackHook.setDisabled(false); + ScopedValue.runWhere(ResourcePackHook.DISABLED, true, then.orThrow()); + } catch (ExceptionWrapper ew) { + throw (TEx) ExceptionWrapper.unwrap(ew); } } diff --git a/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/impl/ResourcePackHook.java b/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/impl/ResourcePackHook.java index b90ac9f..6007a3a 100644 --- a/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/impl/ResourcePackHook.java +++ b/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/impl/ResourcePackHook.java @@ -1,6 +1,7 @@ package io.gitlab.jfronny.libjf.data.manipulation.impl; import io.gitlab.jfronny.commons.LazySupplier; +import io.gitlab.jfronny.commons.concurrent.ScopedValue; import io.gitlab.jfronny.libjf.data.manipulation.api.UserResourceEvents; import net.minecraft.resource.*; import net.minecraft.resource.metadata.ResourceMetadataReader; @@ -9,22 +10,15 @@ import org.jetbrains.annotations.ApiStatus; import java.io.IOException; import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; @SuppressWarnings("unused") @ApiStatus.Internal public class ResourcePackHook { - private static final Map disabled = new HashMap<>(); - @ApiStatus.Internal - public static void setDisabled(boolean disabled) { - ResourcePackHook.disabled.put(Thread.currentThread().getId(), disabled); - } + public static final ScopedValue DISABLED = new ScopedValue<>(); - @ApiStatus.Internal - public static boolean isDisabled() { - return disabled.getOrDefault(Thread.currentThread().getId(), false); + private static boolean isDisabled() { + return DISABLED.orElse(false); } public static InputSupplier hookOpenRoot(InputSupplier value, ResourcePack pack, String[] fileName) {