R15's Library
No reviews yet
A library that I use for my mods
Provides a framework or library for other mods to use.
Forge is a popular mod loader for versions 1.1+ of Minecraft.
Neoforge is a fork of the Minecraft Forge available for versions 1.20.1+ of Minecraft. Many Forge mods are compatible with Neoforge and vice versa.
Fabric is a mod loader for versions 1.14+ of Minecraft, particularly popular for client side and optimization mods.
Community voices
Reviews
Click once to include, again to exclude, again to clear
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
Resources
External Links
About
Description

Docs
This library includes animation player, Create 0.5.1/6.0.0, Create: Copycats and CC:Tweaked compatibility
Animations
Animation player with a lot of uses
Registering clip in code
AnimationClip clip = AnimationClip.builder("myaddon:drill_pose", 20.0F)
.looping(true)
.track(new TimelineTrack("right_arm", List.of(
new Keyframe(0.0F, Transform.IDENTITY, Easing.LINEAR),
new Keyframe(10.0F, new Transform(Float3.ZERO, new Float3(-0.5F, 0.0F, 0.0F), Float3.ONE), Easing.EASE_IN_OUT),
new Keyframe(20.0F, Transform.IDENTITY, Easing.EASE_IN_OUT)
)))
.build();
LibraryApi.registerAnimation(new ResourceLocation("myaddon", "drill_pose"), clip);
Playing on server
LibraryApi.playAnimation(serverPlayer, new ResourceLocation("myaddon", "drill_pose"), 1.0F, true);
Triggering from client
LibraryApi.requestSelfAnimation(new ResourceLocation("myaddon", "drill_pose"), 1.0F, true);
This sends a client->server packet and is controlled by config (allowClientAnimationTriggerPacket).
Data-driven clips
Drop JSON into data/<namespace>/r15lib_animations/<name>.json.
Example shape:
{
"length": 12.0,
"looping": false,
"tracks": {
"right_arm": [
{ "tick": 0.0, "rotation": [0.0, 0.0, 0.0], "easing": "LINEAR" },
{ "tick": 4.0, "rotation": [-0.95, 0.1, 0.0], "easing": "EASE_OUT" },
{ "tick": 12.0, "rotation": [0.0, 0.0, 0.0], "easing": "EASE_IN_OUT" }
]
}
}
Commands
/r15lib play <targets> <clip> [looping] [speed]/r15lib stop <targets>/r15lib clips
CC:Tweaked
Key pieces
@LuaPeripheralMethodannotation for exposed methods.CcTweakedApi.registerPeripheral(...)to bind aBlockEntityclass to a peripheral type.- Reflection bridge creates an
IDynamicPeripheralproxy when CC is installed. - Auto capability attach via Forge event hooks.
Quick example
public class CrusherPeripheralOwner {
private final MyCrusherBlockEntity blockEntity;
public CrusherPeripheralOwner(MyCrusherBlockEntity blockEntity) {
this.blockEntity = blockEntity;
}
@LuaPeripheralMethod("get_progress")
public int getProgress() {
return blockEntity.getProgress();
}
@LuaPeripheralMethod("set_enabled")
public void setEnabled(boolean enabled) {
blockEntity.setEnabled(enabled);
}
}
CcTweakedApi.registerPeripheralFromOwnerClass(
MyCrusherBlockEntity.class,
"myaddon_crusher",
CrusherPeripheralOwner::new,
CrusherPeripheralOwner.class
);
Commands
/r15lib cc/r15lib cc bindings/r15lib cc methods <binding-class>
Create: Copycats Plus
What is included
- Compat detection with multiple candidate mod ids
- Copycat block/block entity detection helpers
- Material scanning (
getMaterial) - Area survey service returning:
- scanned block count
- copycat block count
- copycat block entity count
- materialized entry count
- material id (dominant one)
API
CopycatsApi.isLoaded()CopycatsApi.isCopycat(state)CopycatsApi.isCopycat(blockEntity)CopycatsApi.material(blockEntity)CopycatsApi.survey(level, center, radius)
Config
enableCopycatsReflectionmaxCopycatsSurveyRadius
Commands
/r15lib copycats/r15lib copycats inspect/r15lib copycats survey [radius]
Create
CreateCompatService auto-detects Create and exposes:
installed()line()->V0_5/V0_6/UNKNOWNversion()isKineticBlockEntity(BlockEntity)- reflection reads:
readStressImpact(...)readStressCapacity(...)readSpeed(...)isOverStressed(...)
API usage
CreateAddonApi.snapshot(blockEntity) returns a CreateKineticSnapshot with:
- impact
- capacity
- usage ratio
- speed
- overstressed
- stress tier (
IDLE,LIGHT,MEDIUM,HEAVY,CRITICAL)
CreateAddonApi.survey(level, center, radius) aggregates a local kinetic network area.
Commands
/r15lib create/r15lib create inspect/r15lib create survey [radius]/r15lib create plan <capacity> <machineImpact>/r15lib create profile list/r15lib create profile calc <profile> <capacity>
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers
Statistics
Resources