Begin work on packet codecs

This commit is contained in:
MattiDragon 2024-01-17 20:03:28 +02:00
parent e003d7446f
commit 66936f0a66
27 changed files with 224 additions and 0 deletions

View File

@ -1 +1,7 @@
CLASS net/minecraft/class_4050 net/minecraft/entity/EntityPose
FIELD field_48322 INDEX_TO_VALUE Ljava/util/function/IntFunction;
FIELD field_48323 PACKET_CODEC Lnet/minecraft/class_9139;
FIELD field_48324 index I
METHOD <init> (Ljava/lang/String;II)V
ARG 3 index
METHOD method_56081 getIndex ()I

View File

@ -3,4 +3,6 @@ CLASS net/minecraft/class_2941 net/minecraft/entity/data/TrackedDataHandler
ARG 1 value
METHOD method_12717 create (I)Lnet/minecraft/class_2940;
ARG 1 id
METHOD method_56031 create (Lnet/minecraft/class_9139;)Lnet/minecraft/class_2941;
ARG 0 codec
CLASS class_7394 ImmutableHandler

View File

@ -29,6 +29,8 @@ CLASS net/minecraft/class_2943 net/minecraft/entity/data/TrackedDataHandlerRegis
FIELD field_42237 VECTOR3F Lnet/minecraft/class_2941;
FIELD field_42543 SNIFFER_STATE Lnet/minecraft/class_2941;
FIELD field_47707 ARMADILLO_STATE Lnet/minecraft/class_2941;
FIELD field_48265 OPTIONAL_BLOCK_STATE_CODEC Lnet/minecraft/class_9139;
FIELD field_48266 OPTIONAL_INT_CODEC Lnet/minecraft/class_9139;
METHOD method_12719 getId (Lnet/minecraft/class_2941;)I
ARG 0 handler
METHOD method_12720 register (Lnet/minecraft/class_2941;)V

View File

@ -24,7 +24,12 @@ CLASS net/minecraft/class_9069 net/minecraft/entity/passive/ArmadilloEntity
CLASS class_9070 State
FIELD field_47793 name Ljava/lang/String;
FIELD field_47794 CODEC Lnet/minecraft/class_3542$class_7292;
FIELD field_48335 PACKET_CODEC Lnet/minecraft/class_9139;
FIELD field_48336 INDEX_TO_VALUE Ljava/util/function/IntFunction;
FIELD field_48337 index I
METHOD <init> (Ljava/lang/String;ILjava/lang/String;I)V
ARG 3 name
ARG 4 index
METHOD method_55727 fromName (Ljava/lang/String;)Lnet/minecraft/class_9069$class_9070;
ARG 0 name
METHOD method_56084 getIndex ()I

View File

@ -38,3 +38,9 @@ CLASS net/minecraft/class_8153 net/minecraft/entity/passive/SnifferEntity
METHOD method_51301 isSearching ()Z
METHOD method_51508 getDigPos ()Lnet/minecraft/class_2338;
CLASS class_8154 State
FIELD field_48340 INDEX_TO_VALUE Ljava/util/function/IntFunction;
FIELD field_48341 PACKET_CODEC Lnet/minecraft/class_9139;
FIELD field_48342 index I
METHOD <init> (Ljava/lang/String;II)V
ARG 3 index
METHOD method_56085 getIndex ()I

View File

@ -110,6 +110,8 @@ CLASS net/minecraft/class_1799 net/minecraft/item/ItemStack
FIELD field_47310 INGREDIENT_ENTRY_CODEC Lcom/mojang/serialization/Codec;
FIELD field_47311 CUTTING_RECIPE_RESULT_CODEC Lcom/mojang/serialization/MapCodec;
FIELD field_47312 ITEM_CODEC Lcom/mojang/serialization/Codec;
FIELD field_48349 PACKET_CODEC Lnet/minecraft/class_9139;
FIELD field_48350 LIST_PACKET_CODEC Lnet/minecraft/class_9139;
FIELD field_8029 MODIFIER_FORMAT Ljava/text/DecimalFormat;
FIELD field_8030 bobbingAnimationTime I
FIELD field_8031 count I
@ -608,6 +610,8 @@ CLASS net/minecraft/class_1799 net/minecraft/item/ItemStack
COMMENT
COMMENT @see #isDamageable
COMMENT @see #getDamage
CLASS 1
FIELD field_48351 ITEM_PACKET_CODEC Lnet/minecraft/class_9139;
CLASS class_5422 TooltipSection
FIELD field_25775 flag I
METHOD method_30269 getFlag ()I

View File

@ -342,6 +342,7 @@ CLASS net/minecraft/class_2540 net/minecraft/network/PacketByteBuf
COMMENT written
COMMENT @see #readNbt()
COMMENT @see #readNbt(NbtSizeTracker)
ARG 1 ntb
METHOD method_10795 readByteArray ()[B
COMMENT Reads an array of primitive bytes from this buf. The array first has a
COMMENT var int indicating its length, followed by the actual bytes. The array
@ -1072,6 +1073,29 @@ CLASS net/minecraft/class_2540 net/minecraft/network/PacketByteBuf
COMMENT @return the read text
COMMENT @see #readText()
COMMENT @see #writeText(Text)
METHOD method_56337 writeUuid (Lio/netty/buffer/ByteBuf;Ljava/util/UUID;)V
ARG 0 buf
ARG 1 uuid
METHOD method_56338 writeQuanternionf (Lio/netty/buffer/ByteBuf;Lorg/joml/Quaternionf;)V
ARG 0 buf
ARG 1 quaternion
METHOD method_56339 writeVector3f (Lio/netty/buffer/ByteBuf;Lorg/joml/Vector3f;)V
ARG 0 buf
ARG 1 vector
METHOD method_56340 readNbt (Lio/netty/buffer/ByteBuf;Lnet/minecraft/class_2505;)Lnet/minecraft/class_2520;
ARG 0 buf
ARG 1 sizeTracker
METHOD method_56341 writeNbt (Lio/netty/buffer/ByteBuf;Lnet/minecraft/class_2520;)V
ARG 0 buf
ARG 1 nbt
METHOD method_56342 readVector3f (Lio/netty/buffer/ByteBuf;)Lorg/joml/Vector3f;
ARG 0 buf
METHOD method_56343 readQuanternionf (Lio/netty/buffer/ByteBuf;)Lorg/joml/Quaternionf;
ARG 0 buf
METHOD method_56344 readUuid (Lio/netty/buffer/ByteBuf;)Ljava/util/UUID;
ARG 0 buf
METHOD method_56345 readNbt (Lio/netty/buffer/ByteBuf;)Lnet/minecraft/class_2487;
ARG 0 buf
METHOD nioBuffer (II)Ljava/nio/ByteBuffer;
ARG 1 index
ARG 2 length

View File

@ -0,0 +1,41 @@
CLASS net/minecraft/class_9139 net/minecraft/network/codec/PacketCodec
METHOD method_56430 cast ()Lnet/minecraft/class_9139;
METHOD method_56431 unit (Ljava/lang/Object;)Lnet/minecraft/class_9139;
ARG 0 value
METHOD method_56432 xmap (Ljava/util/function/Function;Ljava/util/function/Function;)Lnet/minecraft/class_9139;
ARG 1 to
ARG 2 from
METHOD method_56433 mapResult (Lnet/minecraft/class_9139$class_9140;)Lnet/minecraft/class_9139;
ARG 1 function
METHOD method_56434 record (Lnet/minecraft/class_9139;Ljava/util/function/Function;Ljava/util/function/Function;)Lnet/minecraft/class_9139;
ARG 0 codec
ARG 1 from
ARG 2 to
METHOD method_56435 record (Lnet/minecraft/class_9139;Ljava/util/function/Function;Lnet/minecraft/class_9139;Ljava/util/function/Function;Ljava/util/function/BiFunction;)Lnet/minecraft/class_9139;
ARG 0 codec1
ARG 1 from1
ARG 2 codec2
ARG 3 from2
ARG 4 to
METHOD method_56436 record (Lnet/minecraft/class_9139;Ljava/util/function/Function;Lnet/minecraft/class_9139;Ljava/util/function/Function;Lnet/minecraft/class_9139;Ljava/util/function/Function;Lcom/mojang/datafixers/util/Function3;)Lnet/minecraft/class_9139;
ARG 0 codec1
ARG 1 from1
ARG 2 codec2
ARG 3 from2
ARG 4 codec3
ARG 5 from3
ARG 6 to
METHOD method_56437 of (Lnet/minecraft/class_9142;Lnet/minecraft/class_9141;)Lnet/minecraft/class_9139;
ARG 0 encoder
ARG 1 decoder
METHOD method_56438 of (Lnet/minecraft/class_9143;Lnet/minecraft/class_9141;)Lnet/minecraft/class_9139;
ARG 0 encoder
ARG 1 decoder
METHOD method_56439 mapBuf (Ljava/util/function/Function;)Lnet/minecraft/class_9139;
ARG 1 function
METHOD method_56440 dispatch (Ljava/util/function/Function;Ljava/util/function/Function;)Lnet/minecraft/class_9139;
ARG 1 type
ARG 2 codec
CLASS class_9140 ResultFunction
METHOD apply (Lnet/minecraft/class_9139;)Lnet/minecraft/class_9139;
ARG 1 codec

View File

@ -0,0 +1,70 @@
CLASS net/minecraft/class_9135 net/minecraft/network/codec/PacketCodecs
FIELD field_48547 BOOL Lnet/minecraft/class_9139;
FIELD field_48548 BYTE Lnet/minecraft/class_9139;
FIELD field_48549 SHORT Lnet/minecraft/class_9139;
FIELD field_48550 VAR_INT Lnet/minecraft/class_9139;
FIELD field_48551 VAR_LONG Lnet/minecraft/class_9139;
FIELD field_48552 FLOAT Lnet/minecraft/class_9139;
FIELD field_48553 DOUBLE Lnet/minecraft/class_9139;
FIELD field_48554 STRING Lnet/minecraft/class_9139;
FIELD field_48555 NBT_ELEMENT Lnet/minecraft/class_9139;
FIELD field_48556 NBT_COMPUND Lnet/minecraft/class_9139;
FIELD field_48557 OPTIONAL_NBT Lnet/minecraft/class_9139;
FIELD field_48558 VECTOR3F Lnet/minecraft/class_9139;
FIELD field_48559 QUANTERNION Lnet/minecraft/class_9139;
METHOD method_56363 listMapper ()Lnet/minecraft/class_9139$class_9140;
METHOD method_56364 string (I)Lnet/minecraft/class_9139;
ARG 0 length
METHOD method_56365 registry (Lnet/minecraft/class_5321;)Lnet/minecraft/class_9139;
ARG 0 registry
METHOD method_56366 registry (Lnet/minecraft/class_5321;Ljava/util/function/Function;)Lnet/minecraft/class_9139;
ARG 0 registry
ARG 1 registryTransformer
METHOD method_56367 registryEntry (Lnet/minecraft/class_5321;Lnet/minecraft/class_9139;)Lnet/minecraft/class_9139;
ARG 0 registry
ARG 1 fallback
METHOD method_56368 ofCodec (Lcom/mojang/serialization/Codec;)Lnet/minecraft/class_9139;
ARG 0 codec
METHOD method_56369 (Lcom/mojang/serialization/Codec;Ljava/lang/Object;)Lnet/minecraft/class_2520;
ARG 1 value
METHOD method_56370 (Lcom/mojang/serialization/Codec;Lnet/minecraft/class_2520;)Ljava/lang/Object;
ARG 1 nbt
METHOD method_56371 ofIterable (Lnet/minecraft/class_2359;)Lnet/minecraft/class_9139;
ARG 0 iterable
METHOD method_56373 (Ljava/lang/Object;Ljava/lang/String;)Lio/netty/handler/codec/EncoderException;
ARG 1 error
METHOD method_56374 collectionMapper (Ljava/util/function/IntFunction;)Lnet/minecraft/class_9139$class_9140;
ARG 0 factory
METHOD method_56375 indexed (Ljava/util/function/IntFunction;Ljava/util/function/ToIntFunction;)Lnet/minecraft/class_9139;
ARG 0 from
ARG 1 to
METHOD method_56376 collection (Ljava/util/function/IntFunction;Lnet/minecraft/class_9139;)Lnet/minecraft/class_9139;
ARG 0 factory
ARG 1 elementCodec
METHOD method_56377 map (Ljava/util/function/IntFunction;Lnet/minecraft/class_9139;Lnet/minecraft/class_9139;)Lnet/minecraft/class_9139;
ARG 0 factory
ARG 1 keyCodec
ARG 2 valueCodec
METHOD method_56378 nbt (Ljava/util/function/Supplier;)Lnet/minecraft/class_9139;
ARG 0 sizeTracker
METHOD method_56379 (Lnet/minecraft/class_2487;)Lnet/minecraft/class_2520;
ARG 0 nbt
METHOD method_56380 (Lnet/minecraft/class_2520;)Lnet/minecraft/class_2487;
ARG 0 nbt
METHOD method_56381 (Lnet/minecraft/class_2520;Ljava/lang/String;)Lio/netty/handler/codec/DecoderException;
ARG 1 error
METHOD method_56382 optional (Lnet/minecraft/class_9139;)Lnet/minecraft/class_9139;
ARG 0 codec
METHOD method_56383 registryEntry (Lnet/minecraft/class_5321;)Lnet/minecraft/class_9139;
ARG 0 registry
METHOD method_56384 (Ljava/util/function/IntFunction;Lnet/minecraft/class_9139;)Lnet/minecraft/class_9139;
ARG 1 codec
METHOD method_56385 (Lnet/minecraft/class_9139;)Lnet/minecraft/class_9139;
ARG 0 codec
CLASS 9
METHOD method_56424 getIterable (Lnet/minecraft/class_9129;)Lnet/minecraft/class_2359;
ARG 1 buf
CLASS 10
FIELD field_48562 DIRECT_ENTRY_MARKER I
METHOD method_56390 getEntries (Lnet/minecraft/class_9129;)Lnet/minecraft/class_2359;
ARG 1 buf

View File

@ -0,0 +1,3 @@
CLASS net/minecraft/class_9141 net/minecraft/network/codec/PacketDecoder
METHOD decode (Ljava/lang/Object;)Ljava/lang/Object;
ARG 1 buf

View File

@ -0,0 +1,4 @@
CLASS net/minecraft/class_9142 net/minecraft/network/codec/PacketEncoder
METHOD encode (Ljava/lang/Object;Ljava/lang/Object;)V
ARG 1 buf
ARG 2 value

View File

@ -0,0 +1,10 @@
CLASS net/minecraft/class_9129 net/minecraft/network/codec/RegistryByteBuf
FIELD field_48538 registryManager Lnet/minecraft/class_5455;
METHOD <init> (Lio/netty/buffer/ByteBuf;Lnet/minecraft/class_5455;)V
ARG 1 buf
ARG 2 registryManager
METHOD method_56349 getRegistryManager ()Lnet/minecraft/class_5455;
METHOD method_56350 makeFactory (Lnet/minecraft/class_5455;)Ljava/util/function/Function;
ARG 0 registryManager
METHOD method_56351 (Lnet/minecraft/class_5455;Lio/netty/buffer/ByteBuf;)Lnet/minecraft/class_9129;
ARG 1 buf

View File

@ -0,0 +1,4 @@
CLASS net/minecraft/class_9143 net/minecraft/network/codec/ValueFirstEncoder
METHOD encode (Ljava/lang/Object;Ljava/lang/Object;)V
ARG 1 value
ARG 2 buf

View File

@ -1 +1,24 @@
CLASS net/minecraft/class_8710 net/minecraft/network/packet/CustomPayload
METHOD method_56479 getKey ()Lnet/minecraft/class_8710$class_9154;
METHOD method_56483 keyOf (Ljava/lang/String;)Lnet/minecraft/class_8710$class_9154;
ARG 0 id
METHOD method_56484 codecOf (Lnet/minecraft/class_9143;Lnet/minecraft/class_9141;)Lnet/minecraft/class_9139;
ARG 0 encoder
ARG 1 decoder
METHOD method_56485 createCodec (Lnet/minecraft/class_8710$class_9153;Ljava/util/List;)Lnet/minecraft/class_9139;
ARG 0 factory
ARG 1 codecs
METHOD method_56486 (Lnet/minecraft/class_8710$class_9155;)Lnet/minecraft/class_2960;
ARG 0 pair
CLASS 1
METHOD method_56487 getCodec (Lnet/minecraft/class_2960;)Lnet/minecraft/class_9139;
ARG 1 id
METHOD method_56489 encode (Lnet/minecraft/class_2540;Lnet/minecraft/class_8710$class_9154;Lnet/minecraft/class_8710;)V
ARG 1 value
ARG 2 type
ARG 3 payload
CLASS class_9153 CodecFactory
METHOD create (Lnet/minecraft/class_2960;)Lnet/minecraft/class_9139;
ARG 1 id
CLASS class_9154 Type
CLASS class_9155 CodecPair

View File

@ -8,3 +8,4 @@ CLASS net/minecraft/class_2396 net/minecraft/particle/ParticleType
METHOD method_10298 getParametersFactory ()Lnet/minecraft/class_2394$class_2395;
METHOD method_10299 shouldAlwaysSpawn ()Z
METHOD method_29138 getCodec ()Lcom/mojang/serialization/Codec;
METHOD method_56179 getPacketCodec ()Lnet/minecraft/class_9139;

View File

@ -1,5 +1,6 @@
CLASS net/minecraft/class_2398 net/minecraft/particle/ParticleTypes
FIELD field_25125 TYPE_CODEC Lcom/mojang/serialization/Codec;
FIELD field_48456 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD method_10303 register (Ljava/lang/String;Z)Lnet/minecraft/class_2400;
ARG 0 name
ARG 1 alwaysShow
@ -10,3 +11,5 @@ CLASS net/minecraft/class_2398 net/minecraft/particle/ParticleTypes
ARG 3 codecGetter
METHOD method_42616 (Lnet/minecraft/class_2396;)Lcom/mojang/serialization/Codec;
ARG 0 type
METHOD method_56180 (Lnet/minecraft/class_2396;)Lnet/minecraft/class_9139;
ARG 0 type

View File

@ -2,6 +2,7 @@ CLASS net/minecraft/class_7290 net/minecraft/particle/ShriekParticleEffect
FIELD field_38358 CODEC Lcom/mojang/serialization/Codec;
FIELD field_38359 FACTORY Lnet/minecraft/class_2394$class_2395;
FIELD field_38360 delay I
FIELD field_48459 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD <init> (I)V
ARG 1 delay
METHOD method_42617 (Lcom/mojang/serialization/codecs/RecordCodecBuilder$Instance;)Lcom/mojang/datafixers/kinds/App;
@ -9,3 +10,5 @@ CLASS net/minecraft/class_7290 net/minecraft/particle/ShriekParticleEffect
METHOD method_42618 (Lnet/minecraft/class_7290;)Ljava/lang/Integer;
ARG 0 particleEffect
METHOD method_42619 getDelay ()I
METHOD method_56186 (Lnet/minecraft/class_7290;)Ljava/lang/Integer;
ARG 0 effect

View File

@ -58,6 +58,8 @@ CLASS net/minecraft/class_5321 net/minecraft/registry/RegistryKey
COMMENT by passing the registry {@code E}.
ARG 1 registryRef
METHOD method_41185 getRegistry ()Lnet/minecraft/class_2960;
METHOD method_56038 createPacketCodec (Lnet/minecraft/class_5321;)Lnet/minecraft/class_9139;
ARG 0 registry
CLASS class_7892 RegistryIdPair
FIELD comp_1150 id Lnet/minecraft/class_2960;
METHOD comp_1150 id ()Lnet/minecraft/class_2960;

View File

@ -1,6 +1,7 @@
CLASS net/minecraft/class_8824 net/minecraft/text/TextCodecs
FIELD field_46597 CODEC Lcom/mojang/serialization/Codec;
FIELD field_46598 STRINGIFIED_CODEC Lcom/mojang/serialization/Codec;
FIELD field_48540 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD method_54164 (Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult;
ARG 0 json
METHOD method_54165 (Lcom/mojang/datafixers/util/Either;)Lnet/minecraft/class_2561;

View File

@ -91,6 +91,7 @@ CLASS net/minecraft/class_2960 net/minecraft/util/Identifier
FIELD field_33380 NAMESPACE_SEPARATOR C
FIELD field_33381 DEFAULT_NAMESPACE Ljava/lang/String;
FIELD field_33382 REALMS_NAMESPACE Ljava/lang/String;
FIELD field_48267 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD <init> (Ljava/lang/String;)V
COMMENT <p>Takes a string of the form {@code <namespace>:<path>} or {@code <path>} which will use the default namespace, for example {@code minecraft:iron_ingot} or {@code iron_ingot}.
COMMENT <p>The string will be split (on the {@code :}) into an identifier with the specified path and namespace.

View File

@ -6,6 +6,7 @@ CLASS net/minecraft/class_4844 net/minecraft/util/Uuids
FIELD field_41525 STRING_CODEC Lcom/mojang/serialization/Codec;
FIELD field_46588 STRICT_CODEC Lcom/mojang/serialization/Codec;
FIELD field_47491 SET_CODEC Lcom/mojang/serialization/Codec;
FIELD field_48453 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD method_26274 toIntArray (JJ)[I
ARG 0 uuidMost
ARG 2 uuidLeast

View File

@ -10,3 +10,5 @@ CLASS net/minecraft/class_2359 net/minecraft/util/collection/IndexedIterable
COMMENT
COMMENT @throws IllegalArgumentException if the value is {@code null}
ARG 1 index
METHOD method_56158 getRawIdOrThrow (Ljava/lang/Object;)I
ARG 1 value

View File

@ -18,6 +18,7 @@ CLASS net/minecraft/class_2338 net/minecraft/util/math/BlockPos
FIELD field_10983 BIT_SHIFT_Z I
FIELD field_18789 LOGGER Lorg/slf4j/Logger;
FIELD field_25064 CODEC Lcom/mojang/serialization/Codec;
FIELD field_48404 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD <init> (Lnet/minecraft/class_2382;)V
ARG 1 pos
METHOD method_10060 offset (JLnet/minecraft/class_2350;)J

View File

@ -16,6 +16,8 @@ CLASS net/minecraft/class_2350 net/minecraft/util/math/Direction
FIELD field_11047 axis Lnet/minecraft/class_2350$class_2351;
FIELD field_29502 CODEC Lnet/minecraft/class_3542$class_7292;
FIELD field_35088 VERTICAL_CODEC Lcom/mojang/serialization/Codec;
FIELD field_48449 ID_TO_VALUE_FUNCTION Ljava/util/function/IntFunction;
FIELD field_48450 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD <init> (Ljava/lang/String;IIIILjava/lang/String;Lnet/minecraft/class_2350$class_2352;Lnet/minecraft/class_2350$class_2351;Lnet/minecraft/class_2382;)V
ARG 3 id
ARG 4 idOpposite

View File

@ -2,6 +2,7 @@ CLASS net/minecraft/class_2379 net/minecraft/util/math/EulerAngle
FIELD field_11163 roll F
FIELD field_11164 yaw F
FIELD field_11165 pitch F
FIELD field_48452 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD <init> (FFF)V
ARG 1 pitch
ARG 2 yaw

View File

@ -2,6 +2,7 @@ CLASS net/minecraft/class_4208 net/minecraft/util/math/GlobalPos
FIELD comp_2207 dimension Lnet/minecraft/class_5321;
FIELD comp_2208 pos Lnet/minecraft/class_2338;
FIELD field_25066 CODEC Lcom/mojang/serialization/Codec;
FIELD field_48451 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD <init> (Lnet/minecraft/class_5321;Lnet/minecraft/class_2338;)V
ARG 1 dimension
ARG 2 pos

View File

@ -6,6 +6,7 @@ CLASS net/minecraft/class_3850 net/minecraft/village/VillagerData
FIELD field_24669 CODEC Lcom/mojang/serialization/Codec;
FIELD field_30613 MIN_LEVEL I
FIELD field_30614 MAX_LEVEL I
FIELD field_48345 PACKET_CODEC Lnet/minecraft/class_9139;
METHOD <init> (Lnet/minecraft/class_3854;Lnet/minecraft/class_3852;I)V
ARG 1 type
ARG 2 profession