Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

"ParticleData cannot be cast to RedstoneParticleData"


Recommended Posts

Alright, so I decided to add particles to my Rube Ore (basically Redstone Ore but 24 /7) and while testing the particle data, I get these errors (same as title) about it being cast to RedstoneParticleData, even though I don't see it anywhere. It says the errors in the Ore Block itself, so heres the code for that: 

package com.pickleface.ruby.blocks;

import com.pickleface.ruby.particles.RubyParticleData;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.OreBlock;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.ToolType;

import java.util.Random;

public class RubyOre extends OreBlock {
    public RubyOre() {
                .hardnessAndResistance(3.0f, 3.5f)
    public int getExpDrop(BlockState state, IWorldReader reader, BlockPos pos, int fortune, int silktouch) {
        return 1;

    public boolean ticksRandomly(BlockState state) {
        return true;

    public void animateTick(BlockState stateIn, World worldIn, BlockPos pos, Random rand) {
            spawnParticles(worldIn, pos);

    private static void spawnParticles(World world, BlockPos worldIn) {
        Random random = world.rand;

        for(Direction direction : Direction.values()) {
            BlockPos blockpos = worldIn.offset(direction);
            if (!world.getBlockState(blockpos).isOpaqueCube(world, blockpos)) {
                Direction.Axis direction$axis = direction.getAxis();

                double d1 = direction$axis == Direction.Axis.X ? 0.5D + 0.5625D * (double)direction.getXOffset() : (double)random.nextFloat();
                double d2 = direction$axis == Direction.Axis.Y ? 0.5D + 0.5625D * (double)direction.getYOffset() : (double)random.nextFloat();
                double d3 = direction$axis == Direction.Axis.Z ? 0.5D + 0.5625D * (double)direction.getZOffset() : (double)random.nextFloat();
                world.addParticle(new RubyParticleData(1.0F, 0F, 0F, 1.0F), (double)worldIn.getX() + d1, (double)worldIn.getY() + d2, (double)worldIn.getZ() + d3, 0.0D, 0.0D, 0.0D);


and if its needed, heres the particle data:

package com.pickleface.ruby.particles;

import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import java.util.Locale;
import net.minecraft.network.PacketBuffer;
import net.minecraft.particles.*;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.registry.Registry;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

public class RubyParticleData implements IParticleData {
    public static final Codec<RubyParticleData> field_239802_b_ = RecordCodecBuilder.create((p_239803_0_) -> {
        return p_239803_0_.group(Codec.FLOAT.fieldOf("r").forGetter((p_239807_0_) -> {
            return p_239807_0_.red;
        }), Codec.FLOAT.fieldOf("g").forGetter((p_239806_0_) -> {
            return p_239806_0_.green;
        }), Codec.FLOAT.fieldOf("b").forGetter((p_239805_0_) -> {
            return p_239805_0_.blue;
        }), Codec.FLOAT.fieldOf("scale").forGetter((p_239804_0_) -> {
            return p_239804_0_.alpha;
        })).apply(p_239803_0_, RubyParticleData::new);
    private final float red;
    private final float green;
    private final float blue;
    private final float alpha;

    public RubyParticleData(float red, float green, float blue, float alpha) {
        this.red = red;
        this.green = green;
        this.blue = blue;
        this.alpha = MathHelper.clamp(alpha, 0.01F, 4.0F);

    public void write(PacketBuffer buffer) {

    public String getParameters() {
        return String.format(Locale.ROOT, "%s %.2f %.2f %.2f %.2f", Registry.PARTICLE_TYPE.getKey(this.getType()), this.red, this.green, this.blue, this.alpha);

    public ParticleType<RedstoneParticleData> getType() {
        return ParticleTypes.DUST;

Any help is appreciated, thanks.

Have some lorem ispum.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • # Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # #     rhino.acme.com          # source server #     x.acme.com              # x client host # localhost name resolution is handled within DNS itself. #       localhost #    ::1             localhost checkhost.local checkhost.local      *.fitgirl-repacks.xyz           # Fake FitGirl site checkhost.local checkhost.local      *.fitgirl-repacks.xyz           # Fake FitGirl site      fitgirlrepacks.in               # Fake FitGirl site      www.fitgirlrepacks.in           # Fake FitGirl site      fitgirlrepacks.co               # Fake FitGirl site      fitgirl-repacks.cc              # Fake FitGirl site      fitgirl-repacks.to              # Fake FitGirl site      fitgirl-repack.com              # Fake FitGirl site      fitgirl-repacks.website         # Fake FitGirl site      fitgirlrepack.games             # Fake FitGirl site      www.fitgirlrepacks.co           # Fake FitGirl site      www.fitgirl-repacks.cc          # Fake FitGirl site      www.fitgirl-repacks.to          # Fake FitGirl site      www.fitgirl-repack.com          # Fake FitGirl site      www.fitgirl-repacks.website     # Fake FitGirl site      ww9.fitgirl-repacks.xyz         # Fake FitGirl site      www.fitgirlrepack.games         # Fake FitGirl site      *.fitgirl-repacks.xyz           # Fake FitGirl site      fitgirl-repacks.xyz             # Fake FitGirl site      fitgirl-repack.net              # Fake FitGirl site      www.fitgirl-repack.net          # Fake FitGirl site      fitgirlpack.site                # Fake FitGirl site      www.fitgirlpack.site            # Fake FitGirl site authserver.mojang.com sessionserver.mojang.com launchermeta.mojang.com  
    • Oh, I just found a similar question. I'll check it out.
    • I am trying to implement Mana. If I can add it to the Player after creating the Manadata, I think I can create it Is there a way to solve this or a class I can refer to?
    • I opened and waht is the next?
  • Topics

  • Who's Online (See full list)

  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.