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

M.IO

Description

Provides high-level IO operations and types for handling Minecraft protocol connections, including socket management and data streaming.

Synopsis

Documentation

data Connection Source #

a connection to either a server or a client

Constructors

Connection 

Fields

data Uninterpreted Source #

uninterpreted packet

Constructors

Uninterpreted 

Fields

Instances

Instances details
Data Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

Methods

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

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

toConstr :: Uninterpreted -> Constr #

dataTypeOf :: Uninterpreted -> DataType #

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

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

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

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

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

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

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

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

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

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

Generic Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

Associated Types

type Rep Uninterpreted 
Instance details

Defined in M.IO.Internal.Datagram

type Rep Uninterpreted = D1 ('MetaData "Uninterpreted" "M.IO.Internal.Datagram" "mmm-0.1.0.0-oCDsNp3EBL2JzoyA6cTai" 'False) (C1 ('MetaCons "Uninterpreted" 'PrefixI 'True) (S1 ('MetaSel ('Just "pkcode") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "pkdata") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)))
Show Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

NFData Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

Methods

rnf :: Uninterpreted -> () #

Eq Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

Ord Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

Hashable Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

Lift Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

Methods

lift :: Quote m => Uninterpreted -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Uninterpreted -> Code m Uninterpreted #

type Rep Uninterpreted Source # 
Instance details

Defined in M.IO.Internal.Datagram

type Rep Uninterpreted = D1 ('MetaData "Uninterpreted" "M.IO.Internal.Datagram" "mmm-0.1.0.0-oCDsNp3EBL2JzoyA6cTai" 'False) (C1 ('MetaCons "Uninterpreted" 'PrefixI 'True) (S1 ('MetaSel ('Just "pkcode") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Just "pkdata") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)))

define communication effects

withtalkingserver Source #

Arguments

:: forall (es :: [Effect]) a. (IOE :> es, State ParserState :> es, Concurrent :> es, NonDet :> es) 
=> UnliftStrategy

unlift strategy

-> Maybe String

host (Nothing = all interfaces)

-> String

port

-> Eff (Talking ': es) a

per-connection handler

-> Eff es a

final result

run server accepting multiple connections

withtalkingclient Source #

Arguments

:: forall (es :: [Effect]) a. (IOE :> es, State ParserState :> es, Concurrent :> es, NonDet :> es) 
=> UnliftStrategy

unlift strategy

-> String

host

-> String

port

-> Eff (Talking ': es) a

handler

-> Eff es a

result

run client with single connection

withcxfromsocket :: Socket -> (Connection -> IO a) -> IO a Source #

create a connection from a socket