diff --git a/gradle.properties b/gradle.properties index cbc2055..73f1c83 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ loader_version=0.15.11 fabric_version=0.99.4+1.20.6 -mod_version = 0.10+1.20.6 +mod_version = 0.10.1+1.20.6 maven_group = foundationgames archives_base_name = enhancedblockentities diff --git a/src/main/java/foundationgames/enhancedblockentities/client/render/BlockEntityRendererOverride.java b/src/main/java/foundationgames/enhancedblockentities/client/render/BlockEntityRendererOverride.java index 2c5d237..cbb5bfa 100644 --- a/src/main/java/foundationgames/enhancedblockentities/client/render/BlockEntityRendererOverride.java +++ b/src/main/java/foundationgames/enhancedblockentities/client/render/BlockEntityRendererOverride.java @@ -13,7 +13,7 @@ public void render(BlockEntityRenderer renderer, BlockEntity blockE }; public BlockEntityRendererOverride() { - EBEEvents.RELOAD_MODELS.register((loader, manager, profiler) -> this.onModelsReload()); + EBEEvents.RESOURCE_RELOAD.register(this::onModelsReload); } public abstract void render(BlockEntityRenderer renderer, BlockEntity blockEntity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay); diff --git a/src/main/java/foundationgames/enhancedblockentities/event/EBEEvents.java b/src/main/java/foundationgames/enhancedblockentities/event/EBEEvents.java index f863085..0c8918f 100644 --- a/src/main/java/foundationgames/enhancedblockentities/event/EBEEvents.java +++ b/src/main/java/foundationgames/enhancedblockentities/event/EBEEvents.java @@ -7,13 +7,9 @@ import net.minecraft.util.profiler.Profiler; public enum EBEEvents {; - public static final Event RELOAD_MODELS = EventFactory.createArrayBacked(Reload.class, (callbacks) -> (loader, manager, profiler) -> { - for (Reload event : callbacks) { - event.onReload(loader, manager, profiler); + public static final Event RESOURCE_RELOAD = EventFactory.createArrayBacked(Runnable.class, (callbacks) -> () -> { + for (var event : callbacks) { + event.run(); } }); - - public interface Reload { - void onReload(ModelLoader loader, ResourceManager manager, Profiler profiler); - } } diff --git a/src/main/java/foundationgames/enhancedblockentities/mixin/BakedModelManagerMixin.java b/src/main/java/foundationgames/enhancedblockentities/mixin/BakedModelManagerMixin.java index f8063ab..cf878e9 100644 --- a/src/main/java/foundationgames/enhancedblockentities/mixin/BakedModelManagerMixin.java +++ b/src/main/java/foundationgames/enhancedblockentities/mixin/BakedModelManagerMixin.java @@ -1,22 +1,13 @@ package foundationgames.enhancedblockentities.mixin; -import foundationgames.enhancedblockentities.event.EBEEvents; import foundationgames.enhancedblockentities.util.duck.BakedModelManagerAccess; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.resource.ResourceManager; -import net.minecraft.resource.ResourceReloader; import net.minecraft.util.Identifier; -import net.minecraft.util.profiler.Profiler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; @Mixin(BakedModelManager.class) public class BakedModelManagerMixin implements BakedModelManagerAccess { @@ -26,15 +17,4 @@ public class BakedModelManagerMixin implements BakedModelManagerAccess { public BakedModel enhanced_bes$getModel(Identifier id) { return this.models.get(id); } - - // Should invoke the EBE event after the model manager's block model cache is filled during a resource reload - @Inject(method = "reload", at = @At("TAIL")) - public void enhanced_bes$invokeReloadEvent(ResourceReloader.Synchronizer synchronizer, ResourceManager manager, - Profiler prepareProfiler, Profiler applyProfiler, Executor prepareExecutor, - Executor applyExecutor, CallbackInfoReturnable> cir) { - cir.getReturnValue().thenAccept(obj -> { - var result = (BakedModelManager.BakingResult)(Object)obj; - EBEEvents.RELOAD_MODELS.invoker().onReload(result.modelLoader(), manager, applyProfiler); - }); - } } diff --git a/src/main/java/foundationgames/enhancedblockentities/mixin/MinecraftClientMixin.java b/src/main/java/foundationgames/enhancedblockentities/mixin/MinecraftClientMixin.java new file mode 100644 index 0000000..99ab3c4 --- /dev/null +++ b/src/main/java/foundationgames/enhancedblockentities/mixin/MinecraftClientMixin.java @@ -0,0 +1,19 @@ +package foundationgames.enhancedblockentities.mixin; + +import foundationgames.enhancedblockentities.event.EBEEvents; +import net.minecraft.client.MinecraftClient; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.concurrent.CompletableFuture; + +@Mixin(MinecraftClient.class) +public class MinecraftClientMixin { + @Inject(method = "reloadResources()Ljava/util/concurrent/CompletableFuture;", + at = @At("RETURN")) + private void enhanced_bes$fireReloadEvent(CallbackInfoReturnable> cir) { + cir.getReturnValue().thenAccept(v -> EBEEvents.RESOURCE_RELOAD.invoker().run()); + } +} diff --git a/src/main/resources/enhancedblockentities.mixins.json b/src/main/resources/enhancedblockentities.mixins.json index 7dc7391..c458272 100644 --- a/src/main/resources/enhancedblockentities.mixins.json +++ b/src/main/resources/enhancedblockentities.mixins.json @@ -14,6 +14,7 @@ "DecoratedPotBlockEntityMixin", "EnderChestBlockEntityMixin", "LifecycledResourceManagerImplMixin", + "MinecraftClientMixin", "ShulkerBoxBlockEntityMixin", "SignBlockEntityRenderAccessor", "SignEditScreenMixin",