mmm-0.1.0.0: Minecraft 1.21.4 implementation in Haskell
Copyright(c) axionbuster 2025
LicenseBSD-3-Clause
Safe HaskellNone
LanguageGHC2021

M.Chunk.Code

Description

Encode and decode paletted containers for block states and biomes.

Synopsis

Documentation

data ChunkSection c m Source #

a chunk section where c is the numeric type for block states and m is the same for biomes

Constructors

ChunkSection 

Fields

  • csnonempty :: !Int16

    number of non-air blocks (tracked for optimization)

  • csblockstates :: !(Vector c)

    block states (4,096 entries; 16x16x16, access [y][z][x])

  • csbiomes :: !(Vector m)

    biomes (64 entries; 4x4x4, access [y][z][x])

Instances

Instances details
(Data c, Data m, Unbox c, Unbox m) => Data (ChunkSection c m) Source # 
Instance details

Defined in M.Chunk.Code

Methods

gfoldl :: (forall d b. Data d => c0 (d -> b) -> d -> c0 b) -> (forall g. g -> c0 g) -> ChunkSection c m -> c0 (ChunkSection c m) #

gunfold :: (forall b r. Data b => c0 (b -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (ChunkSection c m) #

toConstr :: ChunkSection c m -> Constr #

dataTypeOf :: ChunkSection c m -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (ChunkSection c m)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (ChunkSection c m)) #

gmapT :: (forall b. Data b => b -> b) -> ChunkSection c m -> ChunkSection c m #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ChunkSection c m -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ChunkSection c m -> r #

gmapQ :: (forall d. Data d => d -> u) -> ChunkSection c m -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ChunkSection c m -> u #

gmapM :: Monad m0 => (forall d. Data d => d -> m0 d) -> ChunkSection c m -> m0 (ChunkSection c m) #

gmapMp :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> ChunkSection c m -> m0 (ChunkSection c m) #

gmapMo :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> ChunkSection c m -> m0 (ChunkSection c m) #

Generic (ChunkSection c m) Source # 
Instance details

Defined in M.Chunk.Code

Associated Types

type Rep (ChunkSection c m) 
Instance details

Defined in M.Chunk.Code

type Rep (ChunkSection c m) = D1 ('MetaData "ChunkSection" "M.Chunk.Code" "mmm-0.1.0.0-oCDsNp3EBL2JzoyA6cTai" 'False) (C1 ('MetaCons "ChunkSection" 'PrefixI 'True) (S1 ('MetaSel ('Just "csnonempty") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int16) :*: (S1 ('MetaSel ('Just "csblockstates") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector c)) :*: S1 ('MetaSel ('Just "csbiomes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector m)))))

Methods

from :: ChunkSection c m -> Rep (ChunkSection c m) x #

to :: Rep (ChunkSection c m) x -> ChunkSection c m #

(Show c, Integral c, FiniteBits c, Unbox c, Show m, Integral m, FiniteBits m, Unbox m) => Show (ChunkSection c m) Source #

uses paletted view with hard-coded settings to compress what's been shown

Instance details

Defined in M.Chunk.Code

(Unbox c, Unbox m, Eq c, Eq m) => Eq (ChunkSection c m) Source # 
Instance details

Defined in M.Chunk.Code

Methods

(==) :: ChunkSection c m -> ChunkSection c m -> Bool #

(/=) :: ChunkSection c m -> ChunkSection c m -> Bool #

(Unbox c, Unbox m, Ord c, Ord m) => Ord (ChunkSection c m) Source # 
Instance details

Defined in M.Chunk.Code

type Rep (ChunkSection c m) Source # 
Instance details

Defined in M.Chunk.Code

type Rep (ChunkSection c m) = D1 ('MetaData "ChunkSection" "M.Chunk.Code" "mmm-0.1.0.0-oCDsNp3EBL2JzoyA6cTai" 'False) (C1 ('MetaCons "ChunkSection" 'PrefixI 'True) (S1 ('MetaSel ('Just "csnonempty") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int16) :*: (S1 ('MetaSel ('Just "csblockstates") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector c)) :*: S1 ('MetaSel ('Just "csbiomes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector m)))))

data ChunkSectionEncoding Source #

encoding configuration for ChunkSection

Constructors

ChunkSectionEncoding 

Fields

Instances

Instances details
Data ChunkSectionEncoding Source # 
Instance details

Defined in M.Chunk.Code

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ChunkSectionEncoding -> c ChunkSectionEncoding #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ChunkSectionEncoding #

toConstr :: ChunkSectionEncoding -> Constr #

dataTypeOf :: ChunkSectionEncoding -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ChunkSectionEncoding) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ChunkSectionEncoding) #

gmapT :: (forall b. Data b => b -> b) -> ChunkSectionEncoding -> ChunkSectionEncoding #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ChunkSectionEncoding -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ChunkSectionEncoding -> r #

gmapQ :: (forall d. Data d => d -> u) -> ChunkSectionEncoding -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ChunkSectionEncoding -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ChunkSectionEncoding -> m ChunkSectionEncoding #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ChunkSectionEncoding -> m ChunkSectionEncoding #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ChunkSectionEncoding -> m ChunkSectionEncoding #

Generic ChunkSectionEncoding Source # 
Instance details

Defined in M.Chunk.Code

Associated Types

type Rep ChunkSectionEncoding 
Instance details

Defined in M.Chunk.Code

type Rep ChunkSectionEncoding = D1 ('MetaData "ChunkSectionEncoding" "M.Chunk.Code" "mmm-0.1.0.0-oCDsNp3EBL2JzoyA6cTai" 'False) (C1 ('MetaCons "ChunkSectionEncoding" 'PrefixI 'True) (S1 ('MetaSel ('Just "cseblockstates") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "csebiomes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)))
Read ChunkSectionEncoding Source # 
Instance details

Defined in M.Chunk.Code

Show ChunkSectionEncoding Source # 
Instance details

Defined in M.Chunk.Code

Eq ChunkSectionEncoding Source # 
Instance details

Defined in M.Chunk.Code

Ord ChunkSectionEncoding Source # 
Instance details

Defined in M.Chunk.Code

type Rep ChunkSectionEncoding Source # 
Instance details

Defined in M.Chunk.Code

type Rep ChunkSectionEncoding = D1 ('MetaData "ChunkSectionEncoding" "M.Chunk.Code" "mmm-0.1.0.0-oCDsNp3EBL2JzoyA6cTai" 'False) (C1 ('MetaCons "ChunkSectionEncoding" 'PrefixI 'True) (S1 ('MetaSel ('Just "cseblockstates") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "csebiomes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)))

mkcscodec Source #

Arguments

:: forall m c (st :: ZeroBitType) r. (Unbox m, Unbox c, FiniteBits m, FiniteBits c, Integral m, Integral c) 
=> ChunkSectionEncoding

encoding settings

-> (ChunkSection c m -> Builder, Parser st r (ChunkSection c m))

a pair of an encoder and a decoder, respectively

create a codec for ChunkSections using the provided settings