CurseForge · Minecraft mod
DC Render API
DC Render API: Custom graphics API powering exclusive visual effects for Dragon Curse Chronicles.
Quick answer
Which DC Render API release should I use?
DC Render API dcrapi-1.0.0.jar targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. All 1 required mods have matching files.
Where it goes
Is DC Render API required on the client, server, or both?
The project page does not say whether this file belongs on the client, dedicated server, or both.
The source does not explicitly classify this release as client-only or server-only.
What else does DC Render API dcrapi-1.0.0.jar need?
dcrapi-1.0.0.jar. Change the file and its required mods may change too.
Install Kotlin for Forge first. We found matching files for this game-version and loader setup.
We only count dependency files that match this setup. A file for another loader does not fill the gap.
Before you install it
Add DC Render API without breaking your instance.
Built for DC Render API dcrapi-1.0.0.jar. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use dcrapi-1.0.0.jar. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
Install Kotlin for Forge first. We found matching files for this game-version and loader setup.
- 03
Put it on the correct side
The project page does not say whether this file belongs on the client, dedicated server, or both.
- 04
Pick the file you checked
Use the “Get this file” button beside dcrapi-1.0.0.jar. It opens that exact file at the source.
About this project
What does DC Render API add?
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
- Place the mod JAR file into the
modsfolder of your Minecraft game directory - 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
Project description from CurseForge.
Pick your setup
DC Render API by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
1.21.1
1 loader build1.20.1
2 loader buildsCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
DC Render API versions and loaders
dcrapi-1.0.0.jar
8 Aug 2026
dcrapi-0.2.0-1.20.1Fabric.jar
8 Aug 2026
dcrapi-0.2.0.jar
8 Aug 2026
dcrapi-0.1.1-1.20.1Fabric.jar
29 Jul 2026
dcrapi-0.1.0-1.20.1Fabric.jar
29 Jul 2026
dcrapi-0.1.1.jar
8 Apr 2026
dcrapi-0.1.0.jar
6 Apr 2026
Looking for an older file? The official CurseForge project page is in Resources.