Fabric Mod Module (quipt-fabric)
The quipt-fabric module brings QUIPT to the Fabric ecosystem, providing server and client functionality alongside custom modding APIs.
Main Entrypoint: QuiptFabric
QuiptFabric implements Fabric's ModInitializer (via QuiptMod) and handles networking payloads.
package live.qsmc.quipt.fabric;
public class QuiptFabric extends QuiptMod implements ServerPlayNetworking.PlayPayloadHandler<PluginMessagePacket> {
public static QuiptFabric instance();
public ResourcePackHandler packHandler();
}
Initialization Steps
- Registers localized Adventure chat messages via
MessageUtils. - Registers server commands (
/quipt,/webhooks) viaFabricCommandExecutor. - Discovers other Quipt-based Fabric mods using
FabricLoader.getInstance().getEntrypointContainers("quipt", QuiptMod.class). - Registers the
FabricLifecycleListenerfor clean server shutdown.
Graceful Server Stopping (FabricLifecycleListener)
To prevent Fabric servers from hanging during /stop, FabricLifecycleListener hooks into ServerLifecycleEvents.SERVER_STOPPING:
package live.qsmc.quipt.fabric.listener;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.minecraft.server.MinecraftServer;
import live.qsmc.quipt.core.Quipt;
import live.qsmc.quipt.fabric.QuiptFabric;
public class FabricLifecycleListener implements ServerLifecycleEvents.ServerStopping {
@Override
public void onServerStopping(MinecraftServer server) {
QuiptFabric fabricInstance = QuiptFabric.instance();
if (fabricInstance != null) {
fabricInstance.shutdown();
}
Quipt.INSTANCE.shutdown();
}
}
Custom Block & Item Abstractions
quipt-fabric provides abstract base classes for registering content with minimal boilerplate:
Custom Blocks (QuiptBlock)
QuiptFullBlock: Standard solid cube blocks.QuiptCarpetBlock: Thin carpet/layer blocks.QuiptPillarBlock: Rotatable directional pillars.QuiptBlockWithEntity: Blocks binding customBlockEntityinstances.- Properties:
BlockBooleanProperty,BlockIntProperty,BlockEnumProperty.
Custom Items (QuiptItem)
QuiptNormalItem: Standard items with custom max count and durability.FoodSettings: Declarative nutrition, saturation modifier, and status effect triggers.
Client Datagen & Particle System
EntrypointDataGenerator: Automates model, blockstate, and localization JSON generation during GradlerunDatagen.QuiptParticleEffect&QuiptParticleType: Dynamic particle rendering hooks for custom spell and visual effects on the client.