PiglixMCMods LogoPiglixMCMods
HomeShadersTexturesModsLow-End ShadersRTX ShadersSavedGuidesAbout
GET IT ONGoogle Play

Popular Collections

πŸ“± Performance HubBest Low-End ShadersMCPE Performance Mods
✨ Realism & RTXRealistic RTX ShadersRTX Texture Packs for MCPE
πŸ€– Platform CompatibilityMinecraft PE Shaders 1.21Shaders for Android & iOS
βš”οΈ Gameplay VibeTop PvP Texture PacksMedieval Texture Packs
🀝 Community & SocialsYouTubeInstagram
Get the Android App β€” Free on Play Store
HomeGuidesAbout UsSponsor & PartnerContactPrivacy PolicyTerms & ConditionsDisclaimer
Minecraft>Mods>DC Render API
DC Render API logo

DC Render API

ByπŸ‘€Yifei

DC Render API: Custom graphics API powering exclusive visual effects for Dragon Curse Chronicles.

Why DC Render API is a top-tier mod mod for Minecraft 1.21.1

Developed by the talented creator Yifei, DC Render API stands out as a highly recommended selection for your Minecraft client. It is fully optimized, compatibility-tested, and brings a major upgrade to the gameplay experience in Minecraft version 1.21.1.

βš™οΈ Quick Resource Specs

Mod CreatorYifei
Latest Version1.21.1
Supported Game Versions1.21.1, 1.20.1
File Size393.77 KB
Last UpdatedUpdated: August 8, 2026
Total Downloads283 downloads
Discover new possibilities in your world with DC Render API, a premium mods project created by Yifei. Designed to run smoothly on Minecraft 1.21.1, this addition brings both quality improvements and immersive elements to your setup.

DC Render API

DC Render API is a Minecraft Forge mod that provides advanced particle rendering and animation systems, offering powerful particle effect creation tools for mod developers.

θ·³θ½¬θ‡³δΈ­ζ–‡δ»‹η»οΌš README.md

Features

Core Features

  • Controllable Particle System: Create and manage controllable particle instances
  • Particle Animation System: Built-in multiple preset animation effects and timeline system
  • Server-side Particle Synchronization: Achieve particle state synchronization between client and server
  • Particle Group Management: Batch management of particle effects
  • Particle Emitter System: Create and manage particle emission sources
  • Particle Style System: Customize particle appearance and behavior
  • Barrage System: Create complex barrage effects
  • Display Entity System: Manage and render display entities
  • Effect System: Combine multiple particle and animation effects
  • Event System: Respond to game events and particle lifecycle
  • Noise System: Generate natural random effects

Animation Effects

  • Circular orbit animation
  • Spiral orbit animation
  • Wave motion animation
  • Random walk animation
  • Ease animation
  • Timeline animation
  • Combined animation

Project Structure

DC Render API/
β”œβ”€β”€ src/
β”‚   └── main/
β”‚       β”œβ”€β”€ java/com/qituo/dcrapi/
β”‚       β”‚   β”œβ”€β”€ DcRenderApi.java             # Main mod class
β”‚       β”‚   β”œβ”€β”€ network/                      # Network related classes
β”‚       β”‚   β”‚   β”œβ”€β”€ DcRenderApiNetwork.java   # Network packet registration
β”‚       β”‚   β”‚   β”œβ”€β”€ ParticleGroupPacket.java  # Particle group synchronization packet
β”‚       β”‚   β”‚   └── ParticleSyncPacket.java   # Particle synchronization packet
β”‚       β”‚   β”œβ”€β”€ particles/                    # Particle related classes
β”‚       β”‚   β”‚   β”œβ”€β”€ emitters/                 # Particle emitters
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ ParticleEmitter.java      # Particle emitter interface
β”‚       β”‚   β”‚   β”‚   └── ParticleEmitterManager.java # Particle emitter manager
β”‚       β”‚   β”‚   β”œβ”€β”€ style/                    # Particle styles
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ ParticleStyle.java         # Particle style interface
β”‚       β”‚   β”‚   β”‚   └── ParticleStyleManager.java  # Particle style manager
β”‚       β”‚   β”‚   β”œβ”€β”€ ClientParticleGroupManager.java  # Client particle group management
β”‚       β”‚   β”‚   β”œβ”€β”€ ControlableParticle.java         # Controllable particle interface
β”‚       β”‚   β”‚   β”œβ”€β”€ DcRenderApiParticleManager.java  # Particle manager
β”‚       β”‚   β”‚   β”œβ”€β”€ ParticleAnimationExample.java    # Particle animation examples
β”‚       β”‚   β”‚   β”œβ”€β”€ ServerParticleGroup.java         # Server-side particle group
β”‚       β”‚   β”‚   └── ServerParticleGroupManager.java  # Server-side particle group management
β”‚       β”‚   └── platform/                     # Platform related classes
β”‚       β”‚       └── DcRenderApiServices.java  # Service interface
β”‚       └── kotlin/com/qituo/dcrapi/          # Kotlin implementation
β”‚           β”œβ”€β”€ animation/                    # Animation system
β”‚           β”‚   β”œβ”€β”€ timeline/                 # Timeline system
β”‚           β”‚   β”‚   β”œβ”€β”€ DoubleConstTimeAnimator.kt
β”‚           β”‚   β”‚   β”œβ”€β”€ Ease.kt
β”‚           β”‚   β”‚   β”œβ”€β”€ Eases.kt
β”‚           β”‚   β”‚   β”œβ”€β”€ Timeline.kt
β”‚           β”‚   β”‚   └── ValueConstTimeAnimator.kt
β”‚           β”‚   β”œβ”€β”€ Animate.kt
β”‚           β”‚   └── AnimateManager.kt
β”‚           β”œβ”€β”€ barrages/                     # Barrage system
β”‚           β”‚   β”œβ”€β”€ Barrage.kt
β”‚           β”‚   └── BarrageManager.kt
β”‚           β”œβ”€β”€ color/                        # Color system
β”‚           β”‚   └── Color.kt
β”‚           β”œβ”€β”€ config/                       # Configuration system
β”‚           β”‚   β”œβ”€β”€ Config.kt
β”‚           β”‚   └── ConfigManager.kt
β”‚           β”œβ”€β”€ display/                      # Display entity system
β”‚           β”‚   β”œβ”€β”€ DisplayEntity.kt
β”‚           β”‚   └── DisplayEntityManager.kt
β”‚           β”œβ”€β”€ effects/                      # Effect system
β”‚           β”‚   β”œβ”€β”€ Effect.kt
β”‚           β”‚   └── EffectManager.kt
β”‚           β”œβ”€β”€ event/                        # Event system
β”‚           β”‚   β”œβ”€β”€ Event.kt
β”‚           β”‚   β”œβ”€β”€ EventBus.kt
β”‚           β”‚   └── Events.kt
β”‚           β”œβ”€β”€ math/                         # Math utilities
β”‚           β”‚   └── Vec3.kt
β”‚           β”œβ”€β”€ noise/                        # Noise system
β”‚           β”‚   β”œβ”€β”€ Noise.kt
β”‚           β”‚   └── PerlinNoise.kt
β”‚           β”œβ”€β”€ particles/                    # Particle system
β”‚           β”‚   β”œβ”€β”€ emitters/                 # Particle emitter implementation
β”‚           β”‚   β”‚   └── BasicParticleEmitter.kt
β”‚           β”‚   β”œβ”€β”€ style/                    # Particle style implementation
β”‚           β”‚   β”‚   └── BasicParticleStyle.kt
β”‚           β”‚   └── ParticleAnimation.kt      # Particle animation implementation
β”‚           β”œβ”€β”€ render/                       # Render system
β”‚           β”‚   β”œβ”€β”€ Render.kt
β”‚           β”‚   └── RenderManager.kt
β”‚           └── shapes/                       # Shape system
β”‚               β”œβ”€β”€ Circle.kt
β”‚               └── Shape.kt
β”œβ”€β”€ build.gradle                              # Gradle build file
β”œβ”€β”€ gradle.properties                         # Gradle properties
└── settings.gradle                           # Gradle settings

Quick Start

Requirements

  • Minecraft 1.20.1+
  • Forge 47.4.17+
  • Java 17+

Installation

  1. Place the mod JAR file into the mods folder of your Minecraft game directory
  2. Start the game, and the mod will load automatically

API Usage Examples

Creating Controllable Particles

import com.qituo.dcrapi.particles.DcRenderApiParticleManager;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.phys.Vec3;

// Create a controllable particle
Vec3 position = new Vec3(0, 0, 0);
int particleId = DcRenderApiParticleManager.createParticle(
    ParticleTypes.FLAME, 
    ParticleTypes.FLAME.get(), 
    position
);

Using Particle Animations

import com.qituo.dcrapi.particles.ParticleAnimation;
import net.minecraft.world.phys.Vec3;

// Create circular orbit animation
Vec3 center = new Vec3(0, 0, 0);
Vec3 animatedPosition = ParticleAnimation.createCircleOrbit(
    center,    // Center point
    2.0,       // Radius
    0.1,       // Speed
    tick       // Current tick
);

// Create spiral orbit animation
Vec3 spiralPosition = ParticleAnimation.createSpiralOrbit(
    center,    // Center point
    1.0,       // Radius
    3.0,       // Height
    0.1,       // Speed
    tick       // Current tick
);

Server-side Particles

import com.qituo.dcrapi.particles.DcRenderApiParticleManager;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.phys.Vec3;

// Create server-side particle
ServerLevel level = ...;
Vec3 position = new Vec3(0, 0, 0);
DcRenderApiParticleManager.createServerParticle(
    level,
    ParticleTypes.FLAME, 
    ParticleTypes.FLAME.get(), 
    position
);

Particle Group Management

Creating Particle Groups

import com.qituo.dcrapi.particles.ServerParticleGroupManager;
import net.minecraft.world.phys.Vec3;

// Create particle group
Vec3 position = new Vec3(0, 0, 0);
int groupId = ServerParticleGroupManager.createGroup(position);

// Add particle to group
ServerParticleGroupManager.addParticleToGroup(
    groupId, 
    ParticleTypes.FLAME, 
    ParticleTypes.FLAME.get()
);

// Start group animation
ServerParticleGroupManager.startGroupAnimation(
    groupId, 
    "circle",  // Animation type
    2.0,       // Radius
    0.1        // Speed
);

Particle Emitter System

Creating Particle Emitters

import com.qituo.dcrapi.particles.emitters.ParticleEmitterManager;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.phys.Vec3;

// Create particle emitter
Vec3 position = new Vec3(0, 0, 0);
int emitterId = ParticleEmitterManager.createEmitter(
    position,
    ParticleTypes.FLAME,
    10,  // Particles per second
    2.0  // Particle speed
);

// Start emitter
ParticleEmitterManager.startEmitter(emitterId);

// Stop emitter
ParticleEmitterManager.stopEmitter(emitterId);

Particle Style System

Creating Custom Particle Styles

import com.qituo.dcrapi.particles.style.ParticleStyleManager;
import net.minecraft.world.phys.Vec3;

// Create particle style
int styleId = ParticleStyleManager.createStyle(
    1.0,    // Size
    0.5,    // Alpha
    new Vec3(1, 0, 0),  // Color (red)
    2.0     // Lifetime
);

// Apply style to particle
ParticleStyleManager.applyStyleToParticle(particleId, styleId);

Barrage System

Creating Barrages

import com.qituo.dcrapi.barrages.BarrageManager;
import net.minecraft.world.phys.Vec3;

// Create barrage
Vec3 position = new Vec3(0, 0, 0);
int barrageId = BarrageManager.createBarrage(
    position,
    "circle",  // Barrage type
    10,        // Barrage count
    2.0,       // Barrage speed
    1.0        // Barrage radius
);

// Start barrage
BarrageManager.startBarrage(barrageId);

Timeline Animation

Creating Timeline Animations

import com.qituo.dcrapi.animation.timeline.Timeline;
import com.qituo.dcrapi.animation.timeline.Eases;
import net.minecraft.world.phys.Vec3;

// Create timeline
Timeline timeline = new Timeline();

// Add position animation
Vec3 startPos = new Vec3(0, 0, 0);
Vec3 endPos = new Vec3(10, 5, 0);
timeline.addPositionAnimation(
    startPos,
    endPos,
    200,  // Duration (ticks)
    Eases.easeInOutCubic  // Ease function
);

// Add scale animation
timeline.addScaleAnimation(
    1.0,
    2.0,
    200,
    Eases.easeOutBounce
);

// Start timeline
timeline.start();

Effect System

Creating Composite Effects

import com.qituo.dcrapi.effects.EffectManager;
import net.minecraft.world.phys.Vec3;

// Create effect
Vec3 position = new Vec3(0, 0, 0);
int effectId = EffectManager.createEffect(position);

// Add particle to effect
EffectManager.addParticleToEffect(effectId, ParticleTypes.FLAME);

// Add animation to effect
EffectManager.addAnimationToEffect(effectId, "spiral", 2.0, 0.1);

// Start effect
EffectManager.startEffect(effectId);

Development Guide

Dependency Configuration

Add the following dependency to your mod's build.gradle file:

dependencies {
    implementation fg.deobf("com.qituo:dcrapi:1.0.0")
}

Registering Particle Types

import com.qituo.dcrapi.particles.DcRenderApiParticleManager;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraftforge.registries.RegistryObject;

// Register custom particle type
public static final RegistryObject<SimpleParticleType> CUSTOM_PARTICLE = 
    DcRenderApiParticleManager.PARTICLE_TYPES.register(
        "custom_particle",
        () -> new SimpleParticleType(false)
    );

Custom Particle Emitters

import com.qituo.dcrapi.particles.emitters.ParticleEmitter;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.phys.Vec3;

// Create custom particle emitter
public class CustomEmitter implements ParticleEmitter {
    private Vec3 position;
    private int particleCount;

    public CustomEmitter(Vec3 position, int particleCount) {
        this.position = position;
        this.particleCount = particleCount;
    }

    @Override
    public void emit() {
        // Custom emission logic
        for (int i = 0; i < particleCount; i++) {
            // Calculate emission position
            Vec3 emitPos = position.add(
                (Math.random() - 0.5) * 2,
                (Math.random() - 0.5) * 2,
                (Math.random() - 0.5) * 2
            );

            // Emit particle
            // Here you can use DcRenderApiParticleManager.createParticle
        }
    }

    @Override
    public void update() {
        // Custom update logic
    }

    @Override
    public boolean isAlive() {
        // Custom alive logic
        return true;
    }
}

Custom Particle Styles

import com.qituo.dcrapi.particles.style.ParticleStyle;
import net.minecraft.world.phys.Vec3;

// Create custom particle style
public class CustomStyle implements ParticleStyle {
    private float size;
    private float alpha;
    private Vec3 color;
    private float lifetime;

    public CustomStyle(float size, float alpha, Vec3 color, float lifetime) {
        this.size = size;
        this.alpha = alpha;
        this.color = color;
        this.lifetime = lifetime;
    }

    @Override
    public float getSize() {
        return size;
    }

    @Override
    public float getAlpha() {
        return alpha;
    }

    @Override
    public Vec3 getColor() {
        return color;
    }

    @Override
    public float getLifetime() {
        return lifetime;
    }

    @Override
    public void update() {
        // Custom update logic
        size *= 0.99f;
        alpha *= 0.95f;
    }
}

Custom Animations

import com.qituo.dcrapi.animation.Animate;
import net.minecraft.world.phys.Vec3;

// Create custom animation
public class CustomAnimation implements Animate {
    private Vec3 startPos;
    private Vec3 endPos;
    private int duration;
    private int ticks;

    public CustomAnimation(Vec3 startPos, Vec3 endPos, int duration) {
        this.startPos = startPos;
        this.endPos = endPos;
        this.duration = duration;
        this.ticks = 0;
    }

    @Override
    public Vec3 animate() {
        float progress = (float) ticks / duration;
        progress = Math.min(progress, 1.0f);

        // Custom animation logic
        return startPos.add(endPos.subtract(startPos).scale(progress));
    }

    @Override
    public boolean isDone() {
        return ticks >= duration;
    }

    @Override
    public void tick() {
        ticks++;
    }
}

License

This project is licensed under the QSUP License. See the LICENSE.md file for details.

Contributing

Welcome to submit Issues and Pull Requests to improve this project!

Contact

  • GitHub: 19136644525lxy/DC-Render-API

The Ultimate Guide to DC Render API

If you are exploring the vast world of Minecraft modifications, DC Render API by Yifei is a standout mod that deserves your attention. With over 283 downloads, it has become a staple for players looking to enhance their experience. As the creator describes it, this project is "DC Render API: Custom graphics API powering exclusive visual effects for Dragon Curse Chronicles.". Whether you are a veteran builder constructing massive cities, or simply a casual player looking to upgrade your survival world, this guide will provide you with all the essential details on how DC Render API alters the game.

What Makes It Special?

Unlike standard mods that simply alter superficial elements, DC Render API introduces a wide array of visual and mechanical features designed to seamlessly blend into the vanilla aesthetic. Yifei has clearly spent significant time refining the project to ensure that every aspect feels polished and responsive for version 1.21.1.

Installation Guide

Getting DC Render API up and running is straightforward. Follow these step-by-step instructions:

  1. Verify Your Version: Ensure your Minecraft launcher is set to version 1.21.1.
  2. Install Mod Loader (if required): If this is a mod, download the compatible loader (Forge, Fabric, NeoForge).
  3. Download the File: Click the secure download button above to retrieve the official file from CurseForge.
  4. Move the File: Place the downloaded file into your `mods`, `shaderpacks`, or `resourcepacks` folder depending on the mod type.
  5. Launch and Enjoy: Open Minecraft, navigate to the respective settings menu, and activate DC Render API.

Compatibility & Performance

Compatibility is robust. DC Render API is designed specifically for version 1.21.1, taking full advantage of the latest engine optimizations. During typical gameplay, this addition maintains a stable frame rate, though lower-end laptops might experience slight stuttering. We recommend pairing this with performance boosters like Sodium or Iris to guarantee a silky-smooth experience.

Details

Downloads:283
Created:4 months ago
Updated:5 days ago
Project ID:1506304
License:All Rights Reserved
Environment:Server

Game Versions

1.21.11.20.1

Mod Loaders

FabricForgeNeoforge

🀝 Join Community for Support

Need help installing this resource or want to see more showcases? Join our community!

Subscribe on YouTubeFollow on Instagram

DC Render API

Screenshot 0
Y
Yifei
MODS CREATOR
Downloads283
Version1.21.1
TypeMODS
File Size393.77 KB

About This mods

DC Render API: Custom graphics API powering exclusive visual effects for Dragon Curse Chronicles.

DC Render API

DC Render API is a Minecraft Forge mod that provides advanced particle rendering and animation systems, offering powerful particle effect creation tools for mod developers.

θ·³θ½¬θ‡³δΈ­ζ–‡δ»‹η»οΌš README.md

Features

Core Features

  • Controllable Particle System: Create and manage controllable particle instances
  • Particle Animation System: Built-in multiple preset animation effects and timeline system
  • Server-side Particle Synchronization: Achieve particle state synchronization between client and server
  • Particle Group Management: Batch management of particle effects
  • Particle Emitter System: Create and manage particle emission sources
  • Particle Style System: Customize particle appearance and behavior
  • Barrage System: Create complex barrage effects
  • Display Entity System: Manage and render display entities
  • Effect System: Combine multiple particle and animation effects
  • Event System: Respond to game events and particle lifecycle
  • Noise System: Generate natural random effects

Animation Effects

  • Circular orbit animation
  • Spiral orbit animation
  • Wave motion animation
  • Random walk animation
  • Ease animation
  • Timeline animation
  • Combined animation

Project Structure

DC Render API/
β”œβ”€β”€ src/
β”‚   └── main/
β”‚       β”œβ”€β”€ java/com/qituo/dcrapi/
β”‚       β”‚   β”œβ”€β”€ DcRenderApi.java             # Main mod class
β”‚       β”‚   β”œβ”€β”€ network/                      # Network related classes
β”‚       β”‚   β”‚   β”œβ”€β”€ DcRenderApiNetwork.java   # Network packet registration
β”‚       β”‚   β”‚   β”œβ”€β”€ ParticleGroupPacket.java  # Particle group synchronization packet
β”‚       β”‚   β”‚   └── ParticleSyncPacket.java   # Particle synchronization packet
β”‚       β”‚   β”œβ”€β”€ particles/                    # Particle related classes
β”‚       β”‚   β”‚   β”œβ”€β”€ emitters/                 # Particle emitters
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ ParticleEmitter.java      # Particle emitter interface
β”‚       β”‚   β”‚   β”‚   └── ParticleEmitterManager.java # Particle emitter manager
β”‚       β”‚   β”‚   β”œβ”€β”€ style/                    # Particle styles
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ ParticleStyle.java         # Particle style interface
β”‚       β”‚   β”‚   β”‚   └── ParticleStyleManager.java  # Particle style manager
β”‚       β”‚   β”‚   β”œβ”€β”€ ClientParticleGroupManager.java  # Client particle group management
β”‚       β”‚   β”‚   β”œβ”€β”€ ControlableParticle.java         # Controllable particle interface
β”‚       β”‚   β”‚   β”œβ”€β”€ DcRenderApiParticleManager.java  # Particle manager
β”‚       β”‚   β”‚   β”œβ”€β”€ ParticleAnimationExample.java    # Particle animation examples
β”‚       β”‚   β”‚   β”œβ”€β”€ ServerParticleGroup.java         # Server-side particle group
β”‚       β”‚   β”‚   └── ServerParticleGroupManager.java  # Server-side particle group management
β”‚       β”‚   └── platform/                     # Platform related classes
β”‚       β”‚       └── DcRenderApiServices.java  # Service interface
β”‚       └── kotlin/com/qituo/dcrapi/          # Kotlin implementation
β”‚           β”œβ”€β”€ animation/                    # Animation system
β”‚           β”‚   β”œβ”€β”€ timeline/                 # Timeline system
β”‚           β”‚   β”‚   β”œβ”€β”€ DoubleConstTimeAnimator.kt
β”‚           β”‚   β”‚   β”œβ”€β”€ Ease.kt
β”‚           β”‚   β”‚   β”œβ”€β”€ Eases.kt
β”‚           β”‚   β”‚   β”œβ”€β”€ Timeline.kt
β”‚           β”‚   β”‚   └── ValueConstTimeAnimator.kt
β”‚           β”‚   β”œβ”€β”€ Animate.kt
β”‚           β”‚   └── AnimateManager.kt
β”‚           β”œβ”€β”€ barrages/                     # Barrage system
β”‚           β”‚   β”œβ”€β”€ Barrage.kt
β”‚           β”‚   └── BarrageManager.kt
β”‚           β”œβ”€β”€ color/                        # Color system
β”‚           β”‚   └── Color.kt
β”‚           β”œβ”€β”€ config/                       # Configuration system
β”‚           β”‚   β”œβ”€β”€ Config.kt
β”‚           β”‚   └── ConfigManager.kt
β”‚           β”œβ”€β”€ display/                      # Display entity system
β”‚           β”‚   β”œβ”€β”€ DisplayEntity.kt
β”‚           β”‚   └── DisplayEntityManager.kt
β”‚           β”œβ”€β”€ effects/                      # Effect system
β”‚           β”‚   β”œβ”€β”€ Effect.kt
β”‚           β”‚   └── EffectManager.kt
β”‚           β”œβ”€β”€ event/                        # Event system
β”‚           β”‚   β”œβ”€β”€ Event.kt
β”‚           β”‚   β”œβ”€β”€ EventBus.kt
β”‚           β”‚   └── Events.kt
β”‚           β”œβ”€β”€ math/                         # Math utilities
β”‚           β”‚   └── Vec3.kt
β”‚           β”œβ”€β”€ noise/                        # Noise system
β”‚           β”‚   β”œβ”€β”€ Noise.kt
β”‚           β”‚   └── PerlinNoise.kt
β”‚           β”œβ”€β”€ particles/                    # Particle system
β”‚           β”‚   β”œβ”€β”€ emitters/                 # Particle emitter implementation
β”‚           β”‚   β”‚   └── BasicParticleEmitter.kt
β”‚           β”‚   β”œβ”€β”€ style/                    # Particle style implementation
β”‚           β”‚   β”‚   └── BasicParticleStyle.kt
β”‚           β”‚   └── ParticleAnimation.kt      # Particle animation implementation
β”‚           β”œβ”€β”€ render/                       # Render system
β”‚           β”‚   β”œβ”€β”€ Render.kt
β”‚           β”‚   └── RenderManager.kt
β”‚           └── shapes/                       # Shape system
β”‚               β”œβ”€β”€ Circle.kt
β”‚               └── Shape.kt
β”œβ”€β”€ build.gradle                              # Gradle build file
β”œβ”€β”€ gradle.properties                         # Gradle properties
└── settings.gradle                           # Gradle settings

Quick Start

Requirements

  • Minecraft 1.20.1+
  • Forge 47.4.17+
  • Java 17+

Installation

  1. Place the mod JAR file into the mods folder of your Minecraft game directory
  2. Start the game, and the mod will load automatically

API Usage Examples

Creating Controllable Particles

import com.qituo.dcrapi.particles.DcRenderApiParticleManager;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.phys.Vec3;

// Create a controllable particle
Vec3 position = new Vec3(0, 0, 0);
int particleId = DcRenderApiParticleManager.createParticle(
    ParticleTypes.FLAME, 
    ParticleTypes.FLAME.get(), 
    position
);

Using Particle Animations

import com.qituo.dcrapi.particles.ParticleAnimation;
import net.minecraft.world.phys.Vec3;

// Create circular orbit animation
Vec3 center = new Vec3(0, 0, 0);
Vec3 animatedPosition = ParticleAnimation.createCircleOrbit(
    center,    // Center point
    2.0,       // Radius
    0.1,       // Speed
    tick       // Current tick
);

// Create spiral orbit animation
Vec3 spiralPosition = ParticleAnimation.createSpiralOrbit(
    center,    // Center point
    1.0,       // Radius
    3.0,       // Height
    0.1,       // Speed
    tick       // Current tick
);

Server-side Particles

import com.qituo.dcrapi.particles.DcRenderApiParticleManager;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.phys.Vec3;

// Create server-side particle
ServerLevel level = ...;
Vec3 position = new Vec3(0, 0, 0);
DcRenderApiParticleManager.createServerParticle(
    level,
    ParticleTypes.FLAME, 
    ParticleTypes.FLAME.get(), 
    position
);

Particle Group Management

Creating Particle Groups

import com.qituo.dcrapi.particles.ServerParticleGroupManager;
import net.minecraft.world.phys.Vec3;

// Create particle group
Vec3 position = new Vec3(0, 0, 0);
int groupId = ServerParticleGroupManager.createGroup(position);

// Add particle to group
ServerParticleGroupManager.addParticleToGroup(
    groupId, 
    ParticleTypes.FLAME, 
    ParticleTypes.FLAME.get()
);

// Start group animation
ServerParticleGroupManager.startGroupAnimation(
    groupId, 
    "circle",  // Animation type
    2.0,       // Radius
    0.1        // Speed
);

Particle Emitter System

Creating Particle Emitters

import com.qituo.dcrapi.particles.emitters.ParticleEmitterManager;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.phys.Vec3;

// Create particle emitter
Vec3 position = new Vec3(0, 0, 0);
int emitterId = ParticleEmitterManager.createEmitter(
    position,
    ParticleTypes.FLAME,
    10,  // Particles per second
    2.0  // Particle speed
);

// Start emitter
ParticleEmitterManager.startEmitter(emitterId);

// Stop emitter
ParticleEmitterManager.stopEmitter(emitterId);

Particle Style System

Creating Custom Particle Styles

import com.qituo.dcrapi.particles.style.ParticleStyleManager;
import net.minecraft.world.phys.Vec3;

// Create particle style
int styleId = ParticleStyleManager.createStyle(
    1.0,    // Size
    0.5,    // Alpha
    new Vec3(1, 0, 0),  // Color (red)
    2.0     // Lifetime
);

// Apply style to particle
ParticleStyleManager.applyStyleToParticle(particleId, styleId);

Barrage System

Creating Barrages

import com.qituo.dcrapi.barrages.BarrageManager;
import net.minecraft.world.phys.Vec3;

// Create barrage
Vec3 position = new Vec3(0, 0, 0);
int barrageId = BarrageManager.createBarrage(
    position,
    "circle",  // Barrage type
    10,        // Barrage count
    2.0,       // Barrage speed
    1.0        // Barrage radius
);

// Start barrage
BarrageManager.startBarrage(barrageId);

Timeline Animation

Creating Timeline Animations

import com.qituo.dcrapi.animation.timeline.Timeline;
import com.qituo.dcrapi.animation.timeline.Eases;
import net.minecraft.world.phys.Vec3;

// Create timeline
Timeline timeline = new Timeline();

// Add position animation
Vec3 startPos = new Vec3(0, 0, 0);
Vec3 endPos = new Vec3(10, 5, 0);
timeline.addPositionAnimation(
    startPos,
    endPos,
    200,  // Duration (ticks)
    Eases.easeInOutCubic  // Ease function
);

// Add scale animation
timeline.addScaleAnimation(
    1.0,
    2.0,
    200,
    Eases.easeOutBounce
);

// Start timeline
timeline.start();

Effect System

Creating Composite Effects

import com.qituo.dcrapi.effects.EffectManager;
import net.minecraft.world.phys.Vec3;

// Create effect
Vec3 position = new Vec3(0, 0, 0);
int effectId = EffectManager.createEffect(position);

// Add particle to effect
EffectManager.addParticleToEffect(effectId, ParticleTypes.FLAME);

// Add animation to effect
EffectManager.addAnimationToEffect(effectId, "spiral", 2.0, 0.1);

// Start effect
EffectManager.startEffect(effectId);

Development Guide

Dependency Configuration

Add the following dependency to your mod's build.gradle file:

dependencies {
    implementation fg.deobf("com.qituo:dcrapi:1.0.0")
}

Registering Particle Types

import com.qituo.dcrapi.particles.DcRenderApiParticleManager;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraftforge.registries.RegistryObject;

// Register custom particle type
public static final RegistryObject<SimpleParticleType> CUSTOM_PARTICLE = 
    DcRenderApiParticleManager.PARTICLE_TYPES.register(
        "custom_particle",
        () -> new SimpleParticleType(false)
    );

Custom Particle Emitters

import com.qituo.dcrapi.particles.emitters.ParticleEmitter;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.phys.Vec3;

// Create custom particle emitter
public class CustomEmitter implements ParticleEmitter {
    private Vec3 position;
    private int particleCount;

    public CustomEmitter(Vec3 position, int particleCount) {
        this.position = position;
        this.particleCount = particleCount;
    }

    @Override
    public void emit() {
        // Custom emission logic
        for (int i = 0; i < particleCount; i++) {
            // Calculate emission position
            Vec3 emitPos = position.add(
                (Math.random() - 0.5) * 2,
                (Math.random() - 0.5) * 2,
                (Math.random() - 0.5) * 2
            );

            // Emit particle
            // Here you can use DcRenderApiParticleManager.createParticle
        }
    }

    @Override
    public void update() {
        // Custom update logic
    }

    @Override
    public boolean isAlive() {
        // Custom alive logic
        return true;
    }
}

Custom Particle Styles

import com.qituo.dcrapi.particles.style.ParticleStyle;
import net.minecraft.world.phys.Vec3;

// Create custom particle style
public class CustomStyle implements ParticleStyle {
    private float size;
    private float alpha;
    private Vec3 color;
    private float lifetime;

    public CustomStyle(float size, float alpha, Vec3 color, float lifetime) {
        this.size = size;
        this.alpha = alpha;
        this.color = color;
        this.lifetime = lifetime;
    }

    @Override
    public float getSize() {
        return size;
    }

    @Override
    public float getAlpha() {
        return alpha;
    }

    @Override
    public Vec3 getColor() {
        return color;
    }

    @Override
    public float getLifetime() {
        return lifetime;
    }

    @Override
    public void update() {
        // Custom update logic
        size *= 0.99f;
        alpha *= 0.95f;
    }
}

Custom Animations

import com.qituo.dcrapi.animation.Animate;
import net.minecraft.world.phys.Vec3;

// Create custom animation
public class CustomAnimation implements Animate {
    private Vec3 startPos;
    private Vec3 endPos;
    private int duration;
    private int ticks;

    public CustomAnimation(Vec3 startPos, Vec3 endPos, int duration) {
        this.startPos = startPos;
        this.endPos = endPos;
        this.duration = duration;
        this.ticks = 0;
    }

    @Override
    public Vec3 animate() {
        float progress = (float) ticks / duration;
        progress = Math.min(progress, 1.0f);

        // Custom animation logic
        return startPos.add(endPos.subtract(startPos).scale(progress));
    }

    @Override
    public boolean isDone() {
        return ticks >= duration;
    }

    @Override
    public void tick() {
        ticks++;
    }
}

License

This project is licensed under the QSUP License. See the LICENSE.md file for details.

Contributing

Welcome to submit Issues and Pull Requests to improve this project!

Contact

  • GitHub: 19136644525lxy/DC-Render-API
πŸ“ŒSupported Minecraft Versions: 1.21.1, 1.20.1

How to Install

1. Make sure Minecraft Fabric or Forge launcher is installed. 2. Place the downloaded .jar or .mcpack file into your Minecraft mods folder. 3. Launch Minecraft and enjoy!