Seam

Quick rating

Seam

No reviews yet

Shared classes and resources for Perspective and Luminance.

API/Library
Mod Loaders
Fabric
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Optional
Server Optional

About

Project Details

Type
Mod
License
GNU Lesser General Public License v3.0 only

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.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

Modrinth ID

Resources

External Links

Source Issues Wiki Discord

About

Description

Seam

Shared classes and resources for Perspective and Luminance.

Seam is currently under development
Some features may change throughout the development process.
Please report bugs, and suggest feature requests on our Issues page.

Alternatively, you can let us know on the #bug reports channel on my Fluxer or Discord server, and we'll make an issue for you.
You can also use the #modding chat channel if you need any help!

If you are a player, you shouldn't need to install this, unless a mod has asked you to. Most mods that use Seam should have it bundled; You can still install Seam alongside, and Fabric will use the most up-to-date one.

The following information is for mod developers, to help them understand how to use Seam.

Events

Seam contains several event registries, to help develop things easier.
These have been primarily designed around Luminance and Perspective, however other mods are welcome to use them!

This description isn't extensive, I recommend looking at our source code!

Client Events

The following client event registries are located in the dev.dannytaylor.perspective.seam.client.events.SeamClientEvents class:

  • CustomBadges
    • It is recommended to use the SeamClientEvents.registerCustomBadge(Identifier badgeId, int outlineColor, int fillColor, int textColor); function to register custom badges, see example in the ModMenu Badges section below.
    • ModBadges
      • It is recommended to use the SeamClientEvents.registerModBadge(String modId, Identifier customBadgeId); function to register mod badges, see example in the ModMenu Badges section below.
    • IconOverrides
      • It is recommended to use the SeamClientEvents.registerIconOverride(String modId, IconOverride iconOverride); function to register icon overrides.
    • ProfiledDebugEntries
      • It is recommended to use the SeamClientEvents.registerProfiledDebugEntry(Identifier identifier, DebugScreenEntry debugScreenEntry, DebugScreenProfile profile, DebugScreenEntryStatus status); function to register profiled debug entries.
    • ClientResourceReloaders
      • Map of net.minecraft.resources.Identifier, net.minecraft.server.packs.resources.PreparableReloadListener, which gets registered on client initialize, and executes on client resource reload.
    • AfterClientResourceReload
      • Map of net.minecraft.resources.Identifier, java.lang.Runnable, which executes after client resources have reloaded.
    • BeforeGuiRender
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GuiRender, which renders before the gui.
    • AfterGuiRender
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GuiRender, which renders after the gui.
    • BeforeGameRender
      • Map of net.minecraft.resources.Identifier, java.lang.Runnable, which executes before the game is rendered.
    • AfterPanoramaRender
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.PanoramaRender, which renders after the menu panorama.
    • AfterVanillaPostEffectRender
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, which renders after the vanilla post-effect shader.
    • BeforeUiRender
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, which renders before the current screen.
    • AfterUiBackgroundRender
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, which renders after the current screen's background.
    • AfterUiRender
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, which renders after everything.
    • OnResized
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.OnResized, which executes when the window is resized.
    • OnMouseScroll
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientCallables.OnMouseScroll, which executes when the mouse is scrolled.
    • OnMouseButton
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientCallables.OnMouseButton, which executes when the mouse handles a button.
    • OnJoinWorld
      • Map of net.minecraft.resources.Identifier, java.lang.Runnable, which executes when the client joins a world.
    • OnLeaveWorld
      • Map of net.minecraft.resources.Identifier, java.lang.Runnable, which executes when the client leaves a world.
    • OnStartItemUse
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.UseItem, which executes when the item is used (client-side only).
    • OnFinishItemUse
      • Map of net.minecraft.resources.Identifier, dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.FinishUsingItem, which executes when the item is finished being used (client-side only).

Message Bar

Seam adds a message bar to the top-center of the screen. See Common Events for how to send messages from the server.

You can update the Message Bar (on the client-side) by using the following function:
dev.dannytaylor.perspective.seam.client.events.SeamClientEvents.sendToMessageBar(Component.literal("this is an example message!"));

Icon Overrides

You can register a custom icon override with Seam. This will automatically update your mod's icon with Mod Menu. If you are using this with another mod (such as Sodium), you will have to implement this manually.

Here is an example of how to register an icon override that only changes on April 1st.

import net.fabricmc.api.ClientModInitializer;
import net.minecraft.resources.Identifier;
import dev.dannytaylor.perspective.seam.client.events.SeamClientEvents;
import dev.dannytaylor.perspective.seam.common.util.DateHelper;
import dev.dannytaylor.perspective.seam.client.events.IconOverride;

public class MyClientInitializer implements ClientModInitializer {    
    @Override
    public void onInitializeClient() {
        SeamClientEvents.registerIconOverride("modId", new IconOverride(Identifier.parse("modid:textures/icon2.png"), DateHelper::isAprilFools));
    }
}

ModMenu Badges

You can register custom mod menu badges with Seam.
Registering custom badges doesn't require mod menu to be installed.

Here is an example of how to register a custom mod menu badge.

import net.fabricmc.api.ClientModInitializer;
import net.minecraft.resources.Identifier;
import dev.dannytaylor.perspective.seam.client.events.SeamClientEvents;

public class MyClientInitializer implements ClientModInitializer {
    public static final Identifier EXAMPLE_BADGE = SeamClientEvents.registerCustomBadge(
        Identifier.parse("modid:example_badge"), // badge identifier
        0xFFAAAAAA, // outline colour
        0xFF808080, // fill colour
        0xFFFFFFFF // text colour
    );
    
    @Override
    public void onInitializeClient() {
        SeamClientEvents.registerModBadge("modId", EXAMPLE_BADGE);
    }
}

You'll also need to add the following key to your language file (/assets/<namespace>/lang/en_us.json).

{
  "gui.modid.custom_badge.example_badge": "Example"
}

The language key format is: gui.<namespace>.custom_badge.<path>.

Included Badges

Seam contains two built-in badges.

Perspective

Used by Perspective's mods, indicating they are part of Perspective.

Luminance

Should be used by mods that use Luminance, indicating support for luminance shaders.
Here is an example of how to add the luminance badge to your mod.

import net.fabricmc.api.ClientModInitializer;
import dev.dannytaylor.perspective.seam.client.events.Badges;

public class MyClientInitializer implements ClientModInitializer {    
    @Override
    public void onInitializeClient() {
        Badges.luminance("modId");
    }
}

Common Events

Seam doesn't currently contain any common or server-only registries.
It does however contain some common functions, and classes.

dev.dannytaylor.perspective.seam.common.data.FabricMod, stores the mod id, name, and creates a logger. You can also send messages to your logger via dev.dannytaylor.perspective.seam.common.data.log.SeamLog by specifying your FabricMod in the function arguments (info, warn, error, and debug all take the following arguments: (AbstractMod mod, String message, Object... args)).

dev.dannytaylor.perspective.seam.common.events.SeamEvents contains tryRun and onInitialize functions. These functions catch and log errors when running the specified runnable. The onInitialize functions also log what they are initializing.

Message Bar

If you're making a client mod, see the Client Events section above. These should be used for server-side mods.

You can send a message to a client's message bar by using dev.dannytaylor.perspective.seam.common.events.SeamEvents.sendToMessageBar(ServerPlayer player, Component message);.

You can also send a message with a custom tick length by using dev.dannytaylor.perspective.seam.common.events.SeamEvents.sendToMessageBar(ServerPlayer player, Component message, float ticks);.


Licenced under LGPL-3.0

Screenshots

Gallery

This project has no gallery images yet.

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

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

<1,000
Downloads
Last Updated
CurseForge
Created
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works