1- package symbolics .division .spirit . vector ;
2-
3- import net .fabricmc .api .ClientModInitializer ;
4- import net .fabricmc .fabric .api .client .event .lifecycle .v1 .ClientTickEvents ;
5- import net .fabricmc .fabric .api .client .networking .v1 .ClientPlayNetworking ;
6- import net .fabricmc .fabric .api .client .rendering .v1 .ArmorRenderer ;
7- import net .fabricmc .fabric .api .client .rendering .v1 .EntityModelLayerRegistry ;
8- import net .fabricmc .fabric .api .client .rendering .v1 .HudRenderCallback ;
9- import net .fabricmc .fabric .api .client .rendering .v1 .LivingEntityFeatureRendererRegistrationCallback ;
10- import net .minecraft .client .MinecraftClient ;
11- import net .minecraft .client .model .ModelPart ;
12- import net .minecraft .client .render .entity .PlayerEntityRenderer ;
13- import symbolics .division .spirit . vector .event .JukeboxEvent ;
14- import symbolics .division .spirit . vector .logic .ISpiritVectorUser ;
15- import symbolics .division .spirit . vector .logic .SVEntityState ;
16- import symbolics .division .spirit . vector .logic .vector .SpiritVector ;
17- import symbolics .division .spirit . vector .logic .ability .SlamPacketC2S ;
18- import symbolics .division .spirit . vector .logic .ability .TeleportAbilityC2SPayload ;
19- import symbolics .division .spirit . vector .networking .ModifyMomentumPayloadS2C ;
20- import symbolics .division .spirit . vector .render .SpiritGaugeHUD ;
21- import symbolics .division .spirit . vector .render .SpiritVectorSkatesRenderer ;
22- import symbolics .division .spirit . vector .render .SpiritWingsFeatureRenderer ;
23- import symbolics .division .spirit . vector .render .SpiritWingsModel ;
24- import symbolics .division .spirit . vector .sfx .ClientSFX ;
25- import symbolics .division .spirit . vector .sfx .EffectsManager ;
26-
27- public class SpiritVectorClient implements ClientModInitializer {
28- @ Override
29- public void onInitializeClient () {
30-
31- /// pardon the dust.
32-
33- EffectsManager .registerSFXRequestC2SCallback (ClientPlayNetworking ::send );
34- // registerS2C(
35- // SVEntityState.Payload.ID, SVEntityState.Payload.CODEC,
36- // (payload, context) -> SVEntityState.handleStateSync(payload, context.player().getWorld())
37- // );
38-
39- ClientPlayNetworking .registerGlobalReceiver (
40- SVEntityState .Payload .ID , (payload , context ) -> SVEntityState .handleStateSync (payload , context .player ().getWorld ())
41- );
42-
43- ClientPlayNetworking .registerGlobalReceiver (
44- ModifyMomentumPayloadS2C .ID ,
45- ((payload , context ) -> ModifyMomentumPayloadS2C .HANDLER (payload , context .player ()))
46- );
47-
48- // spirit wings reg
49- EntityModelLayerRegistry .registerModelLayer (SpiritWingsModel .LAYER , SpiritWingsModel ::getTexturedModelData );
50-
51- LivingEntityFeatureRendererRegistrationCallback .EVENT .register (
52- (entityType , entityRenderer , registrationHelper , context ) -> {
53- if (entityRenderer instanceof PlayerEntityRenderer ) {
54- ModelPart wings = context .getPart (SpiritWingsModel .LAYER );
55- registrationHelper .register (new SpiritWingsFeatureRenderer <>(entityRenderer , wings ));
56- }
57- }
58- );
59-
60- // skates
61- ArmorRenderer .register (new SpiritVectorSkatesRenderer (), SpiritVectorItems .SPIRIT_VECTOR );
62-
63- // particles req
64- ClientSFX .registerAll ();
65- ClientTickEvents .START_CLIENT_TICK .register (InputHandler ::tick );
66-
67- // teleport ability req
68- TeleportAbilityC2SPayload .registerRequestCallback (
69- p -> ClientPlayNetworking .send (new TeleportAbilityC2SPayload (p ))
70- );
71-
72- // space jam
73- SlamPacketC2S .registerRequestCallback (
74- p -> ClientPlayNetworking .send (new SlamPacketC2S ((p )))
75- );
76-
77- HudRenderCallback .EVENT .register (SpiritGaugeHUD ::onHudRender );
78-
79- JukeboxEvent .PLAY .register (((world , jukeboxManager , pos ) -> {
80- if (MinecraftClient .getInstance ().player instanceof ISpiritVectorUser user ) {
81- var sv = user .spiritVector ();
82- if (sv != null && pos .isWithinDistance (sv .user .getPos (), 32 )) {
83- sv .modifyMomentum (SpiritVector .MAX_MOMENTUM / 10 );
84- sv .stateManager ().enableStateFor (SpiritVector .MOMENTUM_DECAY_GRACE_STATE , 20 );
85- }
86- }
87- }));
88- }
89-
90- // private <T extends CustomPayload>
91- // void registerS2C(CustomPayload.Id<T> pid, PacketCodec<? super RegistryByteBuf, T> codec, ClientPlayNetworking.PlayPayloadHandler<T> handler) {
92- // PayloadTypeRegistry.playC2S().register(pid, codec);
93- // ClientPlayNetworking.registerGlobalReceiver(pid, handler);
94- // }
1+ package symbolics .division .spirit_vector ;
2+
3+ import net .fabricmc .api .ClientModInitializer ;
4+ import net .fabricmc .fabric .api .client .event .lifecycle .v1 .ClientTickEvents ;
5+ import net .fabricmc .fabric .api .client .networking .v1 .ClientPlayNetworking ;
6+ import net .fabricmc .fabric .api .client .rendering .v1 .ArmorRenderer ;
7+ import net .fabricmc .fabric .api .client .rendering .v1 .EntityModelLayerRegistry ;
8+ import net .fabricmc .fabric .api .client .rendering .v1 .HudRenderCallback ;
9+ import net .fabricmc .fabric .api .client .rendering .v1 .LivingEntityFeatureRendererRegistrationCallback ;
10+ import net .minecraft .client .MinecraftClient ;
11+ import net .minecraft .client .model .ModelPart ;
12+ import net .minecraft .client .render .entity .PlayerEntityRenderer ;
13+ import symbolics .division .spirit_vector .event .JukeboxEvent ;
14+ import symbolics .division .spirit_vector .logic .ISpiritVectorUser ;
15+ import symbolics .division .spirit_vector .logic .SVEntityState ;
16+ import symbolics .division .spirit_vector .logic .vector .SpiritVector ;
17+ import symbolics .division .spirit_vector .logic .ability .SlamPacketC2S ;
18+ import symbolics .division .spirit_vector .logic .ability .TeleportAbilityC2SPayload ;
19+ import symbolics .division .spirit_vector .networking .ModifyMomentumPayloadS2C ;
20+ import symbolics .division .spirit_vector .render .SpiritGaugeHUD ;
21+ import symbolics .division .spirit_vector .render .SpiritVectorSkatesRenderer ;
22+ import symbolics .division .spirit_vector .render .SpiritWingsFeatureRenderer ;
23+ import symbolics .division .spirit_vector .render .SpiritWingsModel ;
24+ import symbolics .division .spirit_vector .sfx .ClientSFX ;
25+ import symbolics .division .spirit_vector .sfx .EffectsManager ;
26+
27+ public class SpiritVectorClient implements ClientModInitializer {
28+ @ Override
29+ public void onInitializeClient () {
30+
31+ /// pardon the dust.
32+
33+ EffectsManager .registerSFXRequestC2SCallback (ClientPlayNetworking ::send );
34+ // registerS2C(
35+ // SVEntityState.Payload.ID, SVEntityState.Payload.CODEC,
36+ // (payload, context) -> SVEntityState.handleStateSync(payload, context.player().getWorld())
37+ // );
38+
39+ ClientPlayNetworking .registerGlobalReceiver (
40+ SVEntityState .Payload .ID , (payload , context ) -> SVEntityState .handleStateSync (payload , context .player ().getWorld ())
41+ );
42+
43+ ClientPlayNetworking .registerGlobalReceiver (
44+ ModifyMomentumPayloadS2C .ID ,
45+ ((payload , context ) -> ModifyMomentumPayloadS2C .HANDLER (payload , context .player ()))
46+ );
47+
48+ // spirit wings reg
49+ EntityModelLayerRegistry .registerModelLayer (SpiritWingsModel .LAYER , SpiritWingsModel ::getTexturedModelData );
50+
51+ LivingEntityFeatureRendererRegistrationCallback .EVENT .register (
52+ (entityType , entityRenderer , registrationHelper , context ) -> {
53+ if (entityRenderer instanceof PlayerEntityRenderer ) {
54+ ModelPart wings = context .getPart (SpiritWingsModel .LAYER );
55+ registrationHelper .register (new SpiritWingsFeatureRenderer <>(entityRenderer , wings ));
56+ }
57+ }
58+ );
59+
60+ // skates
61+ ArmorRenderer .register (new SpiritVectorSkatesRenderer (), SpiritVectorItems .SPIRIT_VECTOR );
62+
63+ // particles req
64+ ClientSFX .registerAll ();
65+ ClientTickEvents .START_CLIENT_TICK .register (InputHandler ::tick );
66+
67+ // teleport ability req
68+ TeleportAbilityC2SPayload .registerRequestCallback (
69+ p -> ClientPlayNetworking .send (new TeleportAbilityC2SPayload (p ))
70+ );
71+
72+ // space jam
73+ SlamPacketC2S .registerRequestCallback (
74+ p -> ClientPlayNetworking .send (new SlamPacketC2S ((p )))
75+ );
76+
77+ HudRenderCallback .EVENT .register (SpiritGaugeHUD ::onHudRender );
78+
79+ JukeboxEvent .PLAY .register (((world , jukeboxManager , pos ) -> {
80+ if (MinecraftClient .getInstance ().player instanceof ISpiritVectorUser user ) {
81+ var sv = user .spiritVector ();
82+ if (sv != null && pos .isWithinDistance (sv .user .getPos (), 32 )) {
83+ sv .modifyMomentum (SpiritVector .MAX_MOMENTUM / 10 );
84+ sv .stateManager ().enableStateFor (SpiritVector .MOMENTUM_DECAY_GRACE_STATE , 20 );
85+ }
86+ }
87+ }));
88+ }
89+
90+ // private <T extends CustomPayload>
91+ // void registerS2C(CustomPayload.Id<T> pid, PacketCodec<? super RegistryByteBuf, T> codec, ClientPlayNetworking.PlayPayloadHandler<T> handler) {
92+ // PayloadTypeRegistry.playC2S().register(pid, codec);
93+ // ClientPlayNetworking.registerGlobalReceiver(pid, handler);
94+ // }
9595}
0 commit comments