From c6af733cfb00812746adbe51893390e7b1fa114d Mon Sep 17 00:00:00 2001 From: modmuss50 <modmuss50@gmail.com> Date: Sun, 25 Sep 2022 14:46:29 +0100 Subject: [PATCH] Cleanup incorrect mixin shadow annotations/access --- .../mixin/biome/modification/MinecraftServerMixin.java | 4 +++- .../fabric/mixin/blockrenderlayer/RenderLayersMixin.java | 9 +++++++-- .../client/ClientPlayerInteractionManagerMixin.java | 3 +++ .../event/interaction/ServerPlayNetworkHandlerMixin.java | 7 +++++-- .../interaction/ServerPlayerInteractionManagerMixin.java | 6 ++++-- .../mixin/gamerule/GameRuleCommandVisitorMixin.java | 4 +++- .../fabric/mixin/client/model/ModelLoaderMixin.java | 4 ++++ .../networking/client/ClientPlayNetworkHandlerMixin.java | 2 ++ .../mixin/registry/sync/client/BlockColorsMixin.java | 2 ++ .../mixin/registry/sync/client/ItemColorsMixin.java | 2 ++ .../mixin/registry/sync/client/ItemModelsMixin.java | 3 +++ .../mixin/registry/sync/client/ParticleManagerMixin.java | 2 ++ .../fabricmc/fabric/mixin/registry/sync/IdListMixin.java | 3 +++ .../fabric/mixin/registry/sync/MinecraftServerMixin.java | 2 +- .../mixin/renderer/client/SpriteAtlasTextureMixin.java | 2 ++ .../mixin/client/rendering/fluid/FluidRendererMixin.java | 3 +++ .../mixin/client/rendering/WorldRendererMixin.java | 9 +++++++-- 17 files changed, 56 insertions(+), 11 deletions(-) diff --git a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/MinecraftServerMixin.java b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/MinecraftServerMixin.java index 2ffa38502..326e6e525 100644 --- a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/MinecraftServerMixin.java +++ b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/MinecraftServerMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.biome.modification; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -31,8 +32,9 @@ import net.fabricmc.fabric.impl.biome.modification.BiomeModificationImpl; @Mixin(MinecraftServer.class) public abstract class MinecraftServerMixin { + @Final @Shadow - private SaveProperties saveProperties; + protected SaveProperties saveProperties; @Shadow public abstract DynamicRegistryManager.Immutable getRegistryManager(); diff --git a/fabric-blockrenderlayer-v1/src/client/java/net/fabricmc/fabric/mixin/blockrenderlayer/RenderLayersMixin.java b/fabric-blockrenderlayer-v1/src/client/java/net/fabricmc/fabric/mixin/blockrenderlayer/RenderLayersMixin.java index b0b7a33e4..71e0fadcd 100644 --- a/fabric-blockrenderlayer-v1/src/client/java/net/fabricmc/fabric/mixin/blockrenderlayer/RenderLayersMixin.java +++ b/fabric-blockrenderlayer-v1/src/client/java/net/fabricmc/fabric/mixin/blockrenderlayer/RenderLayersMixin.java @@ -18,6 +18,7 @@ package net.fabricmc.fabric.mixin.blockrenderlayer; import java.util.Map; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -33,8 +34,12 @@ import net.fabricmc.fabric.impl.blockrenderlayer.BlockRenderLayerMapImpl; @Mixin(RenderLayers.class) public class RenderLayersMixin { - @Shadow private static Map<Block, RenderLayer> BLOCKS; - @Shadow private static Map<Fluid, RenderLayer> FLUIDS; + @Shadow + @Final + private static Map<Block, RenderLayer> BLOCKS; + @Shadow + @Final + private static Map<Fluid, RenderLayer> FLUIDS; @Inject(method = "<clinit>*", at = @At("RETURN")) private static void onInitialize(CallbackInfo info) { diff --git a/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/ClientPlayerInteractionManagerMixin.java b/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/ClientPlayerInteractionManagerMixin.java index a46dbc190..abdb90809 100644 --- a/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/ClientPlayerInteractionManagerMixin.java +++ b/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/ClientPlayerInteractionManagerMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.event.interaction.client; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -56,8 +57,10 @@ import net.fabricmc.fabric.api.event.player.UseItemCallback; @Mixin(ClientPlayerInteractionManager.class) public abstract class ClientPlayerInteractionManagerMixin { @Shadow + @Final private MinecraftClient client; @Shadow + @Final private ClientPlayNetworkHandler networkHandler; @Shadow private GameMode gameMode; diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayNetworkHandlerMixin.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayNetworkHandlerMixin.java index 406972ab8..e34ee0d36 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayNetworkHandlerMixin.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayNetworkHandlerMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.event.interaction; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -37,10 +38,12 @@ import net.fabricmc.fabric.api.event.player.UseEntityCallback; @Mixin(targets = "net/minecraft/server/network/ServerPlayNetworkHandler$1") public abstract class ServerPlayNetworkHandlerMixin implements PlayerInteractEntityC2SPacket.Handler { @Shadow - public ServerPlayNetworkHandler field_28963; + @Final + ServerPlayNetworkHandler field_28963; @Shadow - public Entity field_28962; + @Final + Entity field_28962; @Inject(method = "interactAt(Lnet/minecraft/util/Hand;Lnet/minecraft/util/math/Vec3d;)V", at = @At(value = "HEAD"), cancellable = true) public void onPlayerInteractEntity(Hand hand, Vec3d hitPosition, CallbackInfo info) { diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerInteractionManagerMixin.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerInteractionManagerMixin.java index ca196793c..7cffa2746 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerInteractionManagerMixin.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerInteractionManagerMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.event.interaction; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -51,9 +52,10 @@ import net.fabricmc.fabric.api.event.player.UseItemCallback; @Mixin(ServerPlayerInteractionManager.class) public class ServerPlayerInteractionManagerMixin { @Shadow - public ServerWorld world; + protected ServerWorld world; + @Final @Shadow - public ServerPlayerEntity player; + protected ServerPlayerEntity player; @Inject(at = @At("HEAD"), method = "processBlockBreakingAction", cancellable = true) public void startBlockBreak(BlockPos pos, PlayerActionC2SPacket.Action playerAction, Direction direction, int worldHeight, int i, CallbackInfo info) { diff --git a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java index 1f99be0e4..85b315053 100644 --- a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java +++ b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java @@ -17,6 +17,7 @@ package net.fabricmc.fabric.mixin.gamerule; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -31,8 +32,9 @@ import net.fabricmc.fabric.impl.gamerule.EnumRuleType; @Mixin(targets = "net/minecraft/server/command/GameRuleCommand$1") public abstract class GameRuleCommandVisitorMixin { + @Final @Shadow - private LiteralArgumentBuilder<ServerCommandSource> field_19419; + LiteralArgumentBuilder<ServerCommandSource> field_19419; @Inject(at = @At("HEAD"), method = "visit(Lnet/minecraft/world/GameRules$Key;Lnet/minecraft/world/GameRules$Type;)V", cancellable = true) private <T extends GameRules.Rule<T>> void onRegisterCommand(GameRules.Key<T> key, GameRules.Type<T> type, CallbackInfo ci) { diff --git a/fabric-models-v0/src/client/java/net/fabricmc/fabric/mixin/client/model/ModelLoaderMixin.java b/fabric-models-v0/src/client/java/net/fabricmc/fabric/mixin/client/model/ModelLoaderMixin.java index ef4c9429f..f67f1d4d7 100644 --- a/fabric-models-v0/src/client/java/net/fabricmc/fabric/mixin/client/model/ModelLoaderMixin.java +++ b/fabric-models-v0/src/client/java/net/fabricmc/fabric/mixin/client/model/ModelLoaderMixin.java @@ -38,12 +38,16 @@ import net.fabricmc.fabric.impl.client.model.ModelLoadingRegistryImpl; @Mixin(ModelLoader.class) public abstract class ModelLoaderMixin implements ModelLoaderHooks { // this is the first one + @Final @Shadow public static ModelIdentifier MISSING_ID; + @Final @Shadow private ResourceManager resourceManager; + @Final @Shadow private Set<Identifier> modelsToLoad; + @Final @Shadow private Map<Identifier, UnbakedModel> unbakedModels; @Shadow diff --git a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientPlayNetworkHandlerMixin.java b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientPlayNetworkHandlerMixin.java index 6e42328b8..032653932 100644 --- a/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientPlayNetworkHandlerMixin.java +++ b/fabric-networking-api-v1/src/client/java/net/fabricmc/fabric/mixin/networking/client/ClientPlayNetworkHandlerMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.networking.client; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -39,6 +40,7 @@ import net.fabricmc.fabric.impl.networking.client.ClientPlayNetworkAddon; @Environment(EnvType.CLIENT) @Mixin(value = ClientPlayNetworkHandler.class, priority = 999) abstract class ClientPlayNetworkHandlerMixin implements NetworkHandlerExtensions { + @Final @Shadow private MinecraftClient client; diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/BlockColorsMixin.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/BlockColorsMixin.java index ae210a7d3..953e46e42 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/BlockColorsMixin.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/BlockColorsMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.registry.sync.client; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -31,6 +32,7 @@ import net.fabricmc.fabric.impl.registry.sync.trackers.IdListTracker; @Mixin(BlockColors.class) public class BlockColorsMixin { + @Final @Shadow private IdList<BlockColorProvider> providers; diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemColorsMixin.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemColorsMixin.java index b5a5019b6..0ecf36132 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemColorsMixin.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemColorsMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.registry.sync.client; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -31,6 +32,7 @@ import net.fabricmc.fabric.impl.registry.sync.trackers.IdListTracker; @Mixin(ItemColors.class) public class ItemColorsMixin { + @Final @Shadow private IdList<ItemColorProvider> providers; diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemModelsMixin.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemModelsMixin.java index 5e5e697bd..3f7ce9fe4 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemModelsMixin.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ItemModelsMixin.java @@ -17,6 +17,7 @@ package net.fabricmc.fabric.mixin.registry.sync.client; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -33,8 +34,10 @@ import net.fabricmc.fabric.impl.registry.sync.trackers.Int2ObjectMapTracker; @Mixin(ItemModels.class) public class ItemModelsMixin { + @Final @Shadow public Int2ObjectMap<ModelIdentifier> modelIds; + @Final @Shadow private Int2ObjectMap<BakedModel> models; diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ParticleManagerMixin.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ParticleManagerMixin.java index d590de1ae..d7b0889df 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ParticleManagerMixin.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/ParticleManagerMixin.java @@ -17,6 +17,7 @@ package net.fabricmc.fabric.mixin.registry.sync.client; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -33,6 +34,7 @@ import net.fabricmc.fabric.impl.registry.sync.trackers.Int2ObjectMapTracker; @Mixin(ParticleManager.class) public class ParticleManagerMixin { + @Final @Shadow private Int2ObjectMap<ParticleFactory<?>> factories; diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/IdListMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/IdListMixin.java index 653b5a234..bfa5be4ec 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/IdListMixin.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/IdListMixin.java @@ -22,6 +22,7 @@ import java.util.List; import it.unimi.dsi.fastutil.ints.Int2IntMap; import it.unimi.dsi.fastutil.ints.Int2IntMaps; import it.unimi.dsi.fastutil.objects.Object2IntMap; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -34,8 +35,10 @@ import net.fabricmc.fabric.impl.registry.sync.RemovableIdList; public class IdListMixin<T> implements RemovableIdList<T> { @Shadow private int nextId; + @Final @Shadow private Object2IntMap<T> idMap; + @Final @Shadow private List<T> list; diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MinecraftServerMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MinecraftServerMixin.java index 0489beec2..28e13cefd 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MinecraftServerMixin.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MinecraftServerMixin.java @@ -34,7 +34,7 @@ import net.fabricmc.loader.api.FabricLoader; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @Unique - private static Logger FABRIC_LOGGER = LoggerFactory.getLogger(MinecraftServerMixin.class); + private static final Logger FABRIC_LOGGER = LoggerFactory.getLogger(MinecraftServerMixin.class); @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;setupServer()Z"), method = "runServer") private void beforeSetupServer(CallbackInfo info) { diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/SpriteAtlasTextureMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/SpriteAtlasTextureMixin.java index 60b20bf41..2cc5ee0df 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/SpriteAtlasTextureMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/SpriteAtlasTextureMixin.java @@ -18,6 +18,7 @@ package net.fabricmc.fabric.mixin.renderer.client; import java.util.Map; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -32,6 +33,7 @@ import net.fabricmc.fabric.impl.renderer.SpriteFinderImpl; @Mixin(SpriteAtlasTexture.class) public class SpriteAtlasTextureMixin implements SpriteFinderImpl.SpriteFinderAccess { + @Final @Shadow private Map<Identifier, Sprite> sprites; diff --git a/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/FluidRendererMixin.java b/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/FluidRendererMixin.java index 6148a8e4b..8ffa25471 100644 --- a/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/FluidRendererMixin.java +++ b/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/FluidRendererMixin.java @@ -17,6 +17,7 @@ package net.fabricmc.fabric.mixin.client.rendering.fluid; import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -42,8 +43,10 @@ import net.fabricmc.fabric.impl.client.rendering.fluid.FluidRendererHookContaine @Mixin(FluidRenderer.class) public class FluidRendererMixin { + @Final @Shadow private Sprite[] lavaSprites; + @Final @Shadow private Sprite[] waterSprites; @Shadow diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/WorldRendererMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/WorldRendererMixin.java index 88cd62b8c..0cacb7c13 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/WorldRendererMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/WorldRendererMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.client.rendering; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -48,10 +49,14 @@ import net.fabricmc.fabric.impl.client.rendering.WorldRenderContextImpl; @Mixin(WorldRenderer.class) public abstract class WorldRendererMixin { - @Shadow private BufferBuilderStorage bufferBuilders; + @Final + @Shadow + private BufferBuilderStorage bufferBuilders; @Shadow private ClientWorld world; @Shadow private ShaderEffect transparencyShader; - @Shadow private MinecraftClient client; + @Final + @Shadow + private MinecraftClient client; @Unique private final WorldRenderContextImpl context = new WorldRenderContextImpl(); @Unique private boolean didRenderParticles;