HomeJavaModsCreate: Trading Floor Ledger
Create: Trading Floor Ledger
ModsJava

Create: Trading Floor Ledger

by Aarow · on Modrinth

An addon for Create: Trading Floor for modpack/quest developers, that tracks how many trades each player has completed.

⬇ Download on Modrinth

Trading Floor Ledger

Trading Floor Ledger is a lightweight addon for Create: Trading Floor that tracks how many trades each player has completed through Trading Depots and provides integration with FTB Quests and KubeJS.

Features

How It Works

Trades are attributed to the player who placed the Trading Depot. Every successful trade increases that player's recorded trade count.

The mod fires a custom Forge event called TradingTradeEvent on the Forge event bus. The event exposes:

Using KubeJS and EventJS, you can listen for this event to implement custom quests, rewards, achievements, leaderboards, or any other gameplay mechanics.

Command

/tf_trades

Displays your current trade count and progress toward the next milestone. Milestones are not built into the mod and are instead defined by your KubeJS scripts.

Requirements

Optional Dependencies

Credits & License

This addon incorporates and adapts portions of the source code from the original Create: Trading Floor project by CakeGit, licensed under the MIT License.

Copyright (c) 2024 CakeGit

Original source code: https://github.com/cakeGit/Create-Trading-Floor

The required MIT copyright notice and license text are included with this project.

Example: FTB Quests integration using KubeJS
// kubejs/server_scripts/trading_floor_quests.js

// Milestones: [trade count, quest task ID]
const MILESTONES = [
    [5,   '57F4FE71F78DFA05'],
    [100, '33FCBCE23CA8214A'],
    [500, '2372061A10003C77'],
];

NativeEvents.onEvent(
    Java.loadClass('com.cak.tradingfloor.fix.TradingTradeEvent'),
    event => {
        const player = event.player;
        const total = event.totalTrades;

        for (const [required, taskId] of MILESTONES) {
            if (total === required) {
                player.server.runCommandSilent(
                    `ftbquests change_progress ${player.name.string} complete ${taskId}`
                );
                console.info(`[TradingFloorFix] Milestone ${required} reached for ${player.name.string}`);
            }
        }
    }
);

ServerEvents.commandRegistry(event => {
    const { commands: Commands } = event;
    event.register(
        Commands.literal('tf_trades')
            .executes(ctx => {
                const player = ctx.source.playerOrException;
                const TradeEventBridge = Java.loadClass('com.cak.tradingfloor.fix.TradeEventBridge');
                const count = TradeEventBridge.getTradeCount(player.server, player.uuid);
                const next = MILESTONES.find(([req]) => req > count);

                const nextComponent = next
                    ? Text.translatable('tradingfloorfix.trades.next', Text.of(`§e${next[0] - count}`))
                    : Text.translatable('tradingfloorfix.trades.done');

                player.tell(
                    Text.translatable('tradingfloorfix.trades.count',
                        Text.of(`§e${count}`),
                        nextComponent
                    ).withStyle('aqua')
                );
                return 1;
            })
    );
});
Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more