header

Framework will start downloading in 5 seconds...

STILL DOWNLOADING MANUALLY??

Join over 10 million players who use the CurseForge app!

Download App Now

Description

Discord Server MrCrayfish's Website MrCrayfish's YouTube MrCrayfish's Discord

📙 About:

Framework is a library designed to aid in the development of multi-platform mods, containing systems for registration, network messages, and more. In addition, Framework contains additional features to further unlock the potential of modding, which can be read below.

🚀 Open Model Format

Open Model Format is an extension to Vanilla's JSON Block Model format. It removes the arbitrary restrictions placed on designing block models, this means you can now rotate an element to any angle instead of  22.5 increments. It also allows elements to be positioned and sized larger than the maximum bounds [-16,-16, -16] to [32, 32, 32]. Below is an example of a helicopter model used in a vehicle mod.

🔑 Synced Data Keys

Synced Data Keys are an improvement of Minecraft's entity data accessor system. It allows you to attach additonal data to any entity without the need of writing a complex capability. The benefit of using Framework's Synced Data Keys is the powerful features it provides. As mentioned by in the name, the data can be automatically synced to clients; this means you don't have to deal with packets. The data can be saved to the entity so it's remembered across world reloads or server restarts. Unlike Minecraft's system, Framework adds an option to allow your data to persist across deaths instead of being reset back to it's default value. Not convinced yet? Check out the example below to see how simple but powerful this system is.

An example of keeping track of how many times a chicken has been hit by players.

// Creating a synced data key
private static final SyncedDataKey<Chicken, Boolean> HIT_COUNT = SyncedDataKey.builder(SyncedClassKey.CHICKEN, Serializers.INTEGER)
    .id(new ResourceLocation("your_mod_id", "hit_count"))
    .defaultValueSupplier(() -> 0)
    .saveToFile()
    .syncMode(SyncMode.TRACKING_ONLY)
    .build();

// Call this in your common setup
FrameworkAPI.registerSyncedDataKey(HIT_COUNT);

// Forge event for when a player attacks an entity
void onHitEntity(AttackEntityEvent event) {
    if(event.getTarget() instanceof Chicken chicken) {
        int newCount = HIT_COUNT.getValue(chicken) + 1;
        HIT_COUNT.setValue(chicken, newCount);
    }
}

📦 Easy Login Packets

Forge has the ability to allow developers to create login packets, however implementing it requires a significant amount of code. Framework condenses the required code into a simple registration method and will handle sending your data to clients.

📔 Developers:

Discover how Framework can be beneficial to your development by reading about it's features here.

🙋‍♀️ Need Support? Join the Official Discord Server:

The comment section isn't great for support, join the official discord server. You can get help installing and configuring mods, resolving crashes and more! Plus you'll also get access to news about mod updates and development (before anywhere else).