diff --git a/src/main/java/com/almostreliable/ponderjs/PonderRegistryEventJS.java b/src/main/java/com/almostreliable/ponderjs/PonderRegistryEventJS.java index 42775c5..eeb168e 100644 --- a/src/main/java/com/almostreliable/ponderjs/PonderRegistryEventJS.java +++ b/src/main/java/com/almostreliable/ponderjs/PonderRegistryEventJS.java @@ -1,5 +1,6 @@ package com.almostreliable.ponderjs; +import com.almostreliable.ponderjs.mixin.PonderSceneRegistryAccessor; import com.almostreliable.ponderjs.util.PonderPlatform; import dev.latvian.mods.kubejs.event.EventJS; import dev.latvian.mods.kubejs.util.ConsoleJS; @@ -23,6 +24,19 @@ public PonderRegistryEventJS(PonderSceneRegistry sceneRegistry) { this.sceneRegistry = sceneRegistry; } + public void remove(Ingredient ingredient) { + var scenes = ((PonderSceneRegistryAccessor) sceneRegistry).ponderjs$scenes(); + Set itemIds = Arrays + .stream(ingredient.getItems()) + .map(ItemStack::getItem) + .map(BuiltInRegistries.ITEM::getKey) + .collect(Collectors.toSet()); + + for (var itemId : itemIds) { + scenes.removeAll(itemId); + } + } + public PonderBuilderJS create(Ingredient ingredient) { if (ingredient.isEmpty()) { throw new IllegalArgumentException("Provided items must not be empty!"); diff --git a/src/main/java/com/almostreliable/ponderjs/mixin/PonderSceneRegistryAccessor.java b/src/main/java/com/almostreliable/ponderjs/mixin/PonderSceneRegistryAccessor.java new file mode 100644 index 0000000..e626228 --- /dev/null +++ b/src/main/java/com/almostreliable/ponderjs/mixin/PonderSceneRegistryAccessor.java @@ -0,0 +1,15 @@ +package com.almostreliable.ponderjs.mixin; + +import com.google.common.collect.Multimap; +import net.createmod.ponder.api.registration.StoryBoardEntry; +import net.createmod.ponder.foundation.registration.PonderSceneRegistry; +import net.minecraft.resources.ResourceLocation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(PonderSceneRegistry.class) +public interface PonderSceneRegistryAccessor { + + @Accessor("scenes") + Multimap ponderjs$scenes(); +} diff --git a/src/main/resources/ponderjs.mixins.json b/src/main/resources/ponderjs.mixins.json index 855381c..c005da8 100644 --- a/src/main/resources/ponderjs.mixins.json +++ b/src/main/resources/ponderjs.mixins.json @@ -12,6 +12,7 @@ "PonderOverlayInstructionsMixin", "PonderSceneBuilderMixin", "PonderSceneRegistryMixin", + "PonderSceneRegistryAccessor", "PonderSpecialInstructionsMixin", "PonderTagRegistryAccessor", "PonderWorldAccessor",