mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-12-05 22:08:06 +00:00
Replace some recipes with a more dynamic system
This adds a new "recipe function" system, that allows transforming the result of a recipe according to some datapack-defined function. Currently, we only provide one function: computercraft:copy_components, which copies components from one of the ingredients to the result. This allows us to replace several of our existing recipes: - Turtle overlay recipes are now defined as a normal shapeless recipe that copies all (non-overlay) components from the input turtle. - Computer conversion recipes (e.g. computer -> turtle, normal -> advanced) copy all components from the input computer to the result. This is more complex (and thus more code), but also a little more flexible, which hopefully is useful for someone :).
This commit is contained in:
@@ -22,12 +22,15 @@ import dan200.computercraft.shared.peripheral.modem.wired.CableBlockEntity;
|
||||
import dan200.computercraft.shared.peripheral.modem.wired.WiredModemFullBlockEntity;
|
||||
import dan200.computercraft.shared.peripheral.modem.wireless.WirelessModemBlockEntity;
|
||||
import dan200.computercraft.shared.platform.FabricConfigFile;
|
||||
import dan200.computercraft.shared.recipe.function.RecipeFunction;
|
||||
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerChunkEvents;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||
import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
|
||||
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
||||
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
|
||||
import net.fabricmc.fabric.api.event.registry.RegistryAttribute;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
||||
import net.fabricmc.fabric.api.loot.v2.LootTableEvents;
|
||||
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
|
||||
@@ -60,6 +63,8 @@ public class ComputerCraft {
|
||||
ServerPlayNetworking.registerGlobalReceiver(type.type(), (packet, player) -> packet.handle(player::player));
|
||||
}
|
||||
|
||||
FabricRegistryBuilder.createSimple(RecipeFunction.REGISTRY).attribute(RegistryAttribute.SYNCED).buildAndRegister();
|
||||
|
||||
ModRegistry.register();
|
||||
ModRegistry.registerMainThread();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user