Client Base

Quick rating

Community listing page, reviews here may not be monitored by the author.

Client Base

By Bug1312Owner

No reviews yet

Bringing your pause menu to physical space!

Mod Loaders
Minecraft

About

Description

Requires Connector and FFAPI on neo/forge.

STILL IN PRE-RELEASE This mod is still in a pre-release state. This means:
  • All features are subject to change
  • Documentation may be slim
  • Examples are not present

Providing the player with a client-only room that dependencies can hook into for special functionality.

This mod adds in a new keybind and config setup that allow the user to pause their game -- but instead of a menu appearing, they spawn into a room! This room can house anything the player desires as long as they set up the correct configs and assets.

Config Schema

Web-based Config Generator based on https://misode.github.io/

MCDoc
dispatch minecraft:resource[clientbase:config] to struct ClientbaseConfig {
	config_format: 1,
	structure: StructureConfig,
	player_start?: PlayerStartConfig,
	renderers?: struct {
		[string]: RendererConfig,
	},
	interactions?: [InteractionConfig],
	easy_place?: [EasyPlaceConfig],
}

struct StructureConfig {
	structure: string,
	offset?: [int] @ 3,
}

struct PlayerStartConfig {
	offset?: [float] @ 3,
	pitch?: float,
	yaw?: float,
}

struct RendererConfig {
	type: RendererType,
	...clientbase:renderer[[type]],
}

enum(string) RendererType {
	FakeBlock = "fake_block",
	BlockEntity = "block_entity",
	BlockModel = "replace_state",
}

dispatch clientbase:renderer[fake_block] to struct FakeBlockRenderer {
	model: #[id="model"] string,
	hitbox?: [[float] @ 6],
}

dispatch clientbase:renderer[block_entity] to struct BlockEntityRenderer {
	renderer: #[id="renderer"] string,
	hitbox?: [[float] @ 6],
}

dispatch clientbase:renderer[replace_state] to struct BlockModelRenderer {
	model: #[id="model"] string,
	replace_state: struct {
		block: #[id="block"] string,
		state: string,
	},
}

struct InteractionConfig {
	type: InteractionType,
	...clientbase:interaction[[type]],
}

enum(string) InteractionType {
	BlockPos = "blockpos",
}

enum(string) InteractionId {
	Exit = "exit",
	Inventory = "inventory",
	Advancements = "advancements",
	Options = "options",
	VideoOptions = "video_options",
}

dispatch clientbase:interaction[blockpos] to struct BlockPosInteraction {
	interaction: InteractionId,
	blockpos: [int] @ 3,
}

struct EasyPlaceConfig {
	blockpos: [int] @ 3,
	renderer: string,
}