Documentation ¶
Overview ¶
Package resource implements the compiling of resource packs found in files, directories or raw byte data. It ensures the data in the resource pack is valid (for example, it checks if the manifest is present and holds correct data) and extracts information which may be obtained by calling the exported methods of a *resource.Pack.
Index ¶
- type Capability
- type Dependency
- type Header
- type Manifest
- type Metadata
- type Module
- type Pack
- func (pack *Pack) Checksum() [32]byte
- func (pack *Pack) ContentKey() string
- func (pack *Pack) DataChunkCount(length int) int
- func (pack *Pack) Dependencies() []Dependency
- func (pack *Pack) Description() string
- func (pack *Pack) DownloadURL() string
- func (pack *Pack) Encrypted() bool
- func (pack *Pack) HasBehaviours() bool
- func (pack *Pack) HasScripts() bool
- func (pack *Pack) HasTextures() bool
- func (pack *Pack) HasWorldTemplate() bool
- func (pack *Pack) Len() int
- func (pack *Pack) Manifest() Manifest
- func (pack *Pack) Modules() []Module
- func (pack *Pack) Name() string
- func (pack *Pack) ReadAt(b []byte, off int64) (n int, err error)
- func (pack *Pack) String() string
- func (pack *Pack) UUID() string
- func (pack *Pack) Version() string
- func (pack Pack) WithContentKey(key string) *Pack
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Capability ¶
type Capability string
Capability is a particular feature that the pack utilises of that isn't necessarily enabled by default.
experimental_custom_ui: Allows HTML files in the pack to be used for custom UI, and scripts in the pack to call and manipulate custom UI. chemistry: Allows the pack to add, change or replace Chemistry functionality.
type Dependency ¶
type Dependency struct { // UUID is the unique identifier of the pack that this pack depends on. It needs to be the exact same UUID // that the pack has defined in the header section of it's manifest file. UUID string `json:"uuid"` // Version is the specific version of the pack that the pack depends on. Should match the version the // other pack has in its manifest file. Version [3]int `json:"version"` }
Dependency describes a pack that this pack depends on in order to work.
type Header ¶
type Header struct { // Name is the name of the pack as it appears within Minecraft. Name string `json:"name"` // Description is a short description of the pack. It will appear in the game below the name of the pack. Description string `json:"description"` // UUID is a unique identifier identifier this pack from any other pack. UUID string `json:"uuid"` // Version is the version of the pack, which can be used to identify changes in the pack. Version [3]int `json:"version"` // MinimumGameVersion is the minimum version of the game that this resource pack was written for. MinimumGameVersion [3]int `json:"min_engine_version"` }
Header is the header of a resource pack. It contains information that applies to the entire resource pack, such as the name of the resource pack.
type Manifest ¶
type Manifest struct { // FormatVersion defines the current version of the manifest. This is currently always 2. FormatVersion int `json:"format_version"` // Header is the header of a resource pack. It contains information that applies to the entire resource // pack, such as the name of the resource pack. Header Header `json:"header"` // Modules describes the modules that comprise the pack. Each entry here defines one of the kinds of // contents of the pack. Modules []Module `json:"modules"` // Dependencies describes the packs that this pack depends on in order to work. Dependencies []Dependency `json:"dependencies,omitempty"` // Capabilities are the different features that the pack makes use of that aren't necessarily enabled by // default. For a list of options, see below. Capabilities []Capability `json:"capabilities,omitempty"` // contains filtered or unexported fields }
Manifest contains all the basic information about the pack that Minecraft needs to identify it.
type Metadata ¶
type Metadata struct { // Author is the name of the author(s) of the pack. Author string `json:"authors,omitempty"` // License is the license applied to the pack. License string `json:"license,omitempty"` // URL is the home website of the creator of the pack. URL string `json:"url,omitempty"` }
Metadata contains additional information about the pack that is otherwise optional.
type Module ¶
type Module struct { // UUID is a unique identifier for the module in the same format as the pack's UUID in the header. This // should be different from the pack's UUID, and different for every module. UUID string `json:"uuid"` // Description is a short description of the module. This is not user-facing at the moment. Description string `json:"description"` // Type is the type of the module. Can be any of the following: resources, data, client_data, interface or // world_template. Type string `json:"type"` // Version is the version of the module in the same format as the pack's version in the header. This can // be used to further identify changes in the pack. Version [3]int `json:"version"` }
Module describes a module that comprises the pack. Each module defines one of the kinds of contents of the pack.
type Pack ¶
type Pack struct {
// contains filtered or unexported fields
}
Pack is a container of a resource pack parsed from a directory or a .zip archive (or .mcpack). It holds methods that may be used to get information about the resource pack.
func MustReadPath ¶ added in v1.32.2
MustReadPath compiles a resource pack found at the path passed. The resource pack must either be a zip archive (extension does not matter, could be .zip or .mcpack), or a directory containing a resource pack. In the case of a directory, the directory is compiled into an archive and the pack is parsed from that. ReadPath operates assuming the resource pack has a 'manifest.json' file in it. If it does not, the function will fail and return an error. Unlike ReadPath, MustReadPath does not return an error and panics if an error occurs instead.
func MustReadURL ¶ added in v1.32.2
MustReadURL downloads a resource pack found at the URL passed and compiles it. The resource pack must be a valid zip archive where the manifest.json file is inside a subdirectory rather than the root itself. If the resource pack is not a valid zip or there is no manifest.json file, an error is returned. Unlike ReadURL, MustReadURL does not return an error and panics if an error occurs instead.
func Read ¶ added in v1.32.2
Read parses an archived resource pack written to a raw byte slice passed. The data must be a valid zip archive and contain a pack manifest in order for the function to succeed. Read saves the data to a temporary archive.
func ReadPath ¶ added in v1.32.2
ReadPath compiles a resource pack found at the path passed. The resource pack must either be a zip archive (extension does not matter, could be .zip or .mcpack), or a directory containing a resource pack. In the case of a directory, the directory is compiled into an archive and the pack is parsed from that. ReadPath operates assuming the resource pack has a 'manifest.json' file in it. If it does not, the function will fail and return an error.
func ReadURL ¶ added in v1.32.2
ReadURL downloads a resource pack found at the URL passed and compiles it. The resource pack must be a valid zip archive where the manifest.json file is inside a subdirectory rather than the root itself. If the resource pack is not a valid zip or there is no manifest.json file, an error is returned.
func (*Pack) Checksum ¶
Checksum returns the SHA256 checksum made from the full, compressed content of the resource pack archive. It is transmitted as a string over network.
func (*Pack) ContentKey ¶
ContentKey returns the encryption key used to encrypt the resource pack. If the pack is not encrypted then this can be empty.
func (*Pack) DataChunkCount ¶
DataChunkCount returns the amount of chunks the data of the resource pack is split into if each chunk has a specific length.
func (*Pack) Dependencies ¶
func (pack *Pack) Dependencies() []Dependency
Dependencies returns all dependency resource packs that must be loaded in order for this resource pack to function correctly.
func (*Pack) Description ¶
Description returns the description of the resource pack.
func (*Pack) DownloadURL ¶ added in v1.32.2
DownloadURL returns the URL that the resource pack can be downloaded from. If the string is empty, then the resource pack will be downloaded over RakNet rather than HTTP.
func (*Pack) Encrypted ¶
Encrypted returns if the resource pack has been encrypted with a content key or not.
func (*Pack) HasBehaviours ¶
HasBehaviours checks if any of the modules of the resource pack have either the type 'data' or 'client_data', meaning they contain behaviours (or scripts).
func (*Pack) HasScripts ¶
HasScripts checks if any of the modules of the resource pack have the type 'client_data', meaning they have scripts in them.
func (*Pack) HasTextures ¶
HasTextures checks if any of the modules of the resource pack have the type 'resources', meaning they have textures in them.
func (*Pack) HasWorldTemplate ¶
HasWorldTemplate checks if the resource compiled holds a level.dat in it, indicating that the resource is a world template.
func (*Pack) Len ¶
Len returns the total length in bytes of the content of the archive that contained the resource pack.
func (*Pack) Manifest ¶
Manifest returns the manifest found in the manifest.json of the resource pack. It contains information about the pack such as its name.
func (*Pack) Modules ¶
Modules returns all modules that the resource pack exists out of. Resource packs usually have only one module, but may have more depending on their functionality.
func (*Pack) ReadAt ¶
ReadAt reads len(b) bytes from the resource pack's archive data at offset off and copies it into b. The amount of bytes read n is returned.
func (*Pack) String ¶
String returns a readable representation of the resource pack. It implements the Stringer interface.
func (*Pack) Version ¶
Version returns the string version of the resource pack. It is guaranteed to have 3 digits in it, joined by a dot.
func (Pack) WithContentKey ¶
WithContentKey creates a copy of the pack and sets the encryption key to the key provided, after which the new Pack is returned.