Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

LivingEquipmentChangeEvent client side


Meldexun
 Share

Recommended Posts

34 minutes ago, Meldexun said:

I need to execute some code when the player switches his armor. But the LivingEquipmentChangeEvent is only server side and i need to do my stuff client side. So is there a way to run my stuff client side when the LivingEquipmentChangeEvent is fired?

Check every tick using ClientTickEvent. Or, depending on your circumstances, send a packet to the client.

Link to comment
Share on other sites

I tried sending a packet and it is recieved on the client.

public class MessageHandlerBD implements IMessageHandler<MessageBD, IMessage> {

	@Override
	public IMessage onMessage(MessageBD messageBD, MessageContext ctx) {
		System.out.println("PACKET");
		return null;
	}

}

But instead of just writing PACKET in the client log, I want to do something with my Capability on the client side. But when i try it the game always is crashing

	@Override
	public IMessage onMessage(MessageBD messageBD, MessageContext ctx) {
		ctx.getServerHandler().player.getCapability(DiveSpeedProvider.DIVESPEED, null).updateDiveSpeed(ctx.getServerHandler().player);
		return null;
	}

 

Link to comment
Share on other sites

14 minutes ago, diesieben07 said:

The client player is always Minecraft#player.

Ok. I feel like that was pretty obvious. Thanks for the help.

 

15 minutes ago, diesieben07 said:

Note that you will need to encapsulate this access to client-only classes through @SidedProxy.

But I don't know what you mean with that.

Link to comment
Share on other sites

Ok, I now registered the Packet in my ClientProxy

public class ClientProxy implements CommonProxy {
	
	@Override
	public void init() {
		BetterDiving.INSTANCE.registerMessage(MessageHandlerBD.class, MessageBD.class, 0, Side.CLIENT);
	}
}

But once i switch armor on a server nothing happens and on the server i get this message: Undefined discriminator for message type MessageBD in channel better_diving

Link to comment
Share on other sites

Now I created a MessageHandlerBDDummy class and I'm calling this in my ServerProxy

BetterDiving.INSTANCE.registerMessage(MessageHandlerBDDummy.class, MessageBD.class, 0, Side.SERVER);

The MessageHandlyerBDDummy class isn't doing something when receiving a packet. And everything seems to work know. Thank you for the help. If there is a better way of solving my issue you can say it.

Link to comment
Share on other sites

20 hours ago, Meldexun said:

CommonProxy

A common proxy doesn’t make sense, proxies are for separating side specific code i.e. code that will crash when executed on the wrong side. A proxy by definition cannot be common. Common code goes anywhere except for in a proxy

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Link to comment
Share on other sites

1 hour ago, diesieben07 said:

The packet must be registered on both sides, no reason to do that through your proxy.

Only the packet action must be encapsulated.

Ok. That makes sense. I will try to do that.

 

13 minutes ago, Cadiboo said:

A common proxy doesn’t make sense, proxies are for separating side specific code i.e. code that will crash when executed on the wrong side. A proxy by definition cannot be common. Common code goes anywhere except for in a proxy

It's just the name of the interface. I have just followed a tutorial for modding beginning and there it was named common proxy. I'm not doing something in this interface.

Link to comment
Share on other sites

3 minutes ago, Meldexun said:

It's just the name of the interface. I have just followed a tutorial for modding beginning and there it was named common proxy. I'm not doing something in this interface.

Great! IProxy is the conventional name for it though

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Link to comment
Share on other sites

1 hour ago, diesieben07 said:

The packet must be registered on both sides, no reason to do that through your proxy.

Only the packet action must be encapsulated.

I now check in my MessageHandler if the message is recieved client side and it seems to work.

	@Override
	public IMessage onMessage(MessageCapabilitySync messageCapabilitySync, MessageContext ctx) {
		if (ctx.side.isClient()) {
			//do some stuff
		}
		return null;
	}

I tried that before but then it was crashing all the time. Thats why I used the proxy to register my message.

 

17 minutes ago, Cadiboo said:

Great! IProxy is the conventional name for it though

I also noticed that most people name it IProxy. Maybe I will change it too.

Link to comment
Share on other sites

1 minute ago, Meldexun said:

I now check in my MessageHandler if the message is recieved client side and it seems to work.


	@Override
	public IMessage onMessage(MessageCapabilitySync messageCapabilitySync, MessageContext ctx) {
		if (ctx.side.isClient()) {
			//do some stuff
		}
		return null;
	}

I tried that before but then it was crashing all the time. Thats why I used the proxy to register my message.

The condition is pointless, you know which side you sent the packet do.

The "do some stuff" part must be in your client proxy though, like I initially mentioned.

Link to comment
Share on other sites

8 minutes ago, diesieben07 said:

The condition is pointless, you know which side you sent the packet do.

The "do some stuff" part must be in your client proxy though, like I initially mentioned.

So I just create a method in my Client proxy which is than called by the MessageHandler.

	@Override
	public IMessage onMessage(MessageCapabilitySync messageCapabilitySync, MessageContext ctx) {
		ClientProxy.message1(messageCapabilitySync, ctx);
		return null;
	}

 

Link to comment
Share on other sites

Directly calling something on ClientProxy defeats its purpose IIRC, You need to call the method from your proxy instance

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • I am trying to create a custom horse, but I am getting an error in bakeLayer.     ModEntityRenderer @Mod.EventBusSubscriber( modid = TutorialMod.MOD_ID, value = {Dist.CLIENT}, bus = Mod.EventBusSubscriber.Bus.MOD ) @OnlyIn(Dist.CLIENT) public class ModEntityRenderers{ private static final Set<ModelLayerLocation> ALL_MODELS = Sets.newHashSet(); public static ModelLayerLocation TUTORIAL_PIG_LAYER = new ModelLayerLocation(new ResourceLocation(TutorialMod.MOD_ID, "tutorial_pig"), "tutorial_pig"); public static ModelLayerLocation TUTORIAL_HORSE_LAYER = new ModelLayerLocation(new ResourceLocation(TutorialMod.MOD_ID, "tutorial_horse"), "tutorial_horse"); public static final ModelLayerLocation HORSEE = register("tutorial_horse"); private static ModelLayerLocation register(String p_171294_) { return register(p_171294_, "main"); } private static ModelLayerLocation register(String p_171296_, String p_171297_) { ModelLayerLocation modellayerlocation = createLocation(p_171296_, p_171297_); if (!ALL_MODELS.add(modellayerlocation)) { throw new IllegalStateException("Duplicate registration for " + modellayerlocation); } else { return modellayerlocation; } } private static ModelLayerLocation createLocation(String p_171301_, String p_171302_) { return new ModelLayerLocation(new ResourceLocation("minecraft", p_171301_), p_171302_); } public static void init() { } //registry list @SubscribeEvent public static void registerEntityRenders(EntityRenderersEvent.RegisterRenderers event) { event.registerEntityRenderer(ModEntityType.TUTORIAL_PIG, TutorialPigRenderer::new); event.registerEntityRenderer(ModEntityType.TUTORIAL_HORSE, TutorialHorseRenderer::new); } //renderer list @SubscribeEvent public static void registerLayerDefinition(EntityRenderersEvent.RegisterLayerDefinitions event) { LayerDefinition ModlayerTutorialHorse = LayerDefinition.create(TutorialHorseModel.createBodyMesh(CubeDeformation.NONE), 64, 64); ImmutableMap.Builder<ModelLayerLocation, LayerDefinition> builder = ImmutableMap.builder(); event.registerLayerDefinition(TUTORIAL_PIG_LAYER, TutorialPigModel::createBodyLayer); // event.registerLayerDefinition(TUTORIAL_HORSE_LAYER, TutorialHorseModel::createMesh); builder.put(HORSEE, ModlayerTutorialHorse); } }   Model @OnlyIn(Dist.CLIENT) public class TutorialHorseModel<T extends AbstractHorse> extends AgeableListModel<T> { private static final float DEG_125 = 2.1816616F; private static final float DEG_60 = ((float)Math.PI / 3F); private static final float DEG_45 = ((float)Math.PI / 4F); private static final float DEG_30 = ((float)Math.PI / 6F); private static final float DEG_15 = 0.2617994F; protected static final String HEAD_PARTS = "head_parts"; private static final String LEFT_HIND_BABY_LEG = "left_hind_baby_leg"; private static final String RIGHT_HIND_BABY_LEG = "right_hind_baby_leg"; private static final String LEFT_FRONT_BABY_LEG = "left_front_baby_leg"; private static final String RIGHT_FRONT_BABY_LEG = "right_front_baby_leg"; private static final String SADDLE = "saddle"; private static final String LEFT_SADDLE_MOUTH = "left_saddle_mouth"; private static final String LEFT_SADDLE_LINE = "left_saddle_line"; private static final String RIGHT_SADDLE_MOUTH = "right_saddle_mouth"; private static final String RIGHT_SADDLE_LINE = "right_saddle_line"; private static final String HEAD_SADDLE = "head_saddle"; private static final String MOUTH_SADDLE_WRAP = "mouth_saddle_wrap"; protected final ModelPart body; protected final ModelPart headParts; private final ModelPart rightHindLeg; private final ModelPart leftHindLeg; private final ModelPart rightFrontLeg; private final ModelPart leftFrontLeg; private final ModelPart rightHindBabyLeg; private final ModelPart leftHindBabyLeg; private final ModelPart rightFrontBabyLeg; private final ModelPart leftFrontBabyLeg; private final ModelPart tail; private final ModelPart[] saddleParts; private final ModelPart[] ridingParts; public TutorialHorseModel(ModelPart p_170668_) { super(true, 16.2F, 1.36F, 2.7272F, 2.0F, 20.0F); this.body = p_170668_.getChild("body"); this.headParts = p_170668_.getChild("head_parts"); this.rightHindLeg = p_170668_.getChild("right_hind_leg"); this.leftHindLeg = p_170668_.getChild("left_hind_leg"); this.rightFrontLeg = p_170668_.getChild("right_front_leg"); this.leftFrontLeg = p_170668_.getChild("left_front_leg"); this.rightHindBabyLeg = p_170668_.getChild("right_hind_baby_leg"); this.leftHindBabyLeg = p_170668_.getChild("left_hind_baby_leg"); this.rightFrontBabyLeg = p_170668_.getChild("right_front_baby_leg"); this.leftFrontBabyLeg = p_170668_.getChild("left_front_baby_leg"); this.tail = this.body.getChild("tail"); ModelPart modelpart = this.body.getChild("saddle"); ModelPart modelpart1 = this.headParts.getChild("left_saddle_mouth"); ModelPart modelpart2 = this.headParts.getChild("right_saddle_mouth"); ModelPart modelpart3 = this.headParts.getChild("left_saddle_line"); ModelPart modelpart4 = this.headParts.getChild("right_saddle_line"); ModelPart modelpart5 = this.headParts.getChild("head_saddle"); ModelPart modelpart6 = this.headParts.getChild("mouth_saddle_wrap"); this.saddleParts = new ModelPart[]{modelpart, modelpart1, modelpart2, modelpart5, modelpart6}; this.ridingParts = new ModelPart[]{modelpart3, modelpart4}; } public static MeshDefinition createBodyMesh(CubeDeformation p_170670_) { MeshDefinition meshdefinition = new MeshDefinition(); PartDefinition partdefinition = meshdefinition.getRoot(); PartDefinition partdefinition1 = partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(0, 32).addBox(-5.0F, -8.0F, -17.0F, 10.0F, 10.0F, 22.0F, new CubeDeformation(0.05F)), PartPose.offset(0.0F, 11.0F, 5.0F)); PartDefinition partdefinition2 = partdefinition.addOrReplaceChild("head_parts", CubeListBuilder.create().texOffs(0, 35).addBox(-2.05F, -6.0F, -2.0F, 4.0F, 12.0F, 7.0F), PartPose.offsetAndRotation(0.0F, 4.0F, -12.0F, ((float)Math.PI / 6F), 0.0F, 0.0F)); PartDefinition partdefinition3 = partdefinition2.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 13).addBox(-3.0F, -11.0F, -2.0F, 6.0F, 5.0F, 7.0F, p_170670_), PartPose.ZERO); partdefinition2.addOrReplaceChild("mane", CubeListBuilder.create().texOffs(56, 36).addBox(-1.0F, -11.0F, 5.01F, 2.0F, 16.0F, 2.0F, p_170670_), PartPose.ZERO); partdefinition2.addOrReplaceChild("upper_mouth", CubeListBuilder.create().texOffs(0, 25).addBox(-2.0F, -11.0F, -7.0F, 4.0F, 5.0F, 5.0F, p_170670_), PartPose.ZERO); partdefinition.addOrReplaceChild("left_hind_leg", CubeListBuilder.create().texOffs(48, 21).mirror().addBox(-3.0F, -1.01F, -1.0F, 4.0F, 11.0F, 4.0F, p_170670_), PartPose.offset(4.0F, 14.0F, 7.0F)); partdefinition.addOrReplaceChild("right_hind_leg", CubeListBuilder.create().texOffs(48, 21).addBox(-1.0F, -1.01F, -1.0F, 4.0F, 11.0F, 4.0F, p_170670_), PartPose.offset(-4.0F, 14.0F, 7.0F)); partdefinition.addOrReplaceChild("left_front_leg", CubeListBuilder.create().texOffs(48, 21).mirror().addBox(-3.0F, -1.01F, -1.9F, 4.0F, 11.0F, 4.0F, p_170670_), PartPose.offset(4.0F, 14.0F, -12.0F)); partdefinition.addOrReplaceChild("right_front_leg", CubeListBuilder.create().texOffs(48, 21).addBox(-1.0F, -1.01F, -1.9F, 4.0F, 11.0F, 4.0F, p_170670_), PartPose.offset(-4.0F, 14.0F, -12.0F)); CubeDeformation cubedeformation = p_170670_.extend(0.0F, 5.5F, 0.0F); partdefinition.addOrReplaceChild("left_hind_baby_leg", CubeListBuilder.create().texOffs(48, 21).mirror().addBox(-3.0F, -1.01F, -1.0F, 4.0F, 11.0F, 4.0F, cubedeformation), PartPose.offset(4.0F, 14.0F, 7.0F)); partdefinition.addOrReplaceChild("right_hind_baby_leg", CubeListBuilder.create().texOffs(48, 21).addBox(-1.0F, -1.01F, -1.0F, 4.0F, 11.0F, 4.0F, cubedeformation), PartPose.offset(-4.0F, 14.0F, 7.0F)); partdefinition.addOrReplaceChild("left_front_baby_leg", CubeListBuilder.create().texOffs(48, 21).mirror().addBox(-3.0F, -1.01F, -1.9F, 4.0F, 11.0F, 4.0F, cubedeformation), PartPose.offset(4.0F, 14.0F, -12.0F)); partdefinition.addOrReplaceChild("right_front_baby_leg", CubeListBuilder.create().texOffs(48, 21).addBox(-1.0F, -1.01F, -1.9F, 4.0F, 11.0F, 4.0F, cubedeformation), PartPose.offset(-4.0F, 14.0F, -12.0F)); partdefinition1.addOrReplaceChild("tail", CubeListBuilder.create().texOffs(42, 36).addBox(-1.5F, 0.0F, 0.0F, 3.0F, 14.0F, 4.0F, p_170670_), PartPose.offsetAndRotation(0.0F, -5.0F, 2.0F, ((float)Math.PI / 6F), 0.0F, 0.0F)); partdefinition1.addOrReplaceChild("saddle", CubeListBuilder.create().texOffs(26, 0).addBox(-5.0F, -8.0F, -9.0F, 10.0F, 9.0F, 9.0F, new CubeDeformation(0.5F)), PartPose.ZERO); partdefinition2.addOrReplaceChild("left_saddle_mouth", CubeListBuilder.create().texOffs(29, 5).addBox(2.0F, -9.0F, -6.0F, 1.0F, 2.0F, 2.0F, p_170670_), PartPose.ZERO); partdefinition2.addOrReplaceChild("right_saddle_mouth", CubeListBuilder.create().texOffs(29, 5).addBox(-3.0F, -9.0F, -6.0F, 1.0F, 2.0F, 2.0F, p_170670_), PartPose.ZERO); partdefinition2.addOrReplaceChild("left_saddle_line", CubeListBuilder.create().texOffs(32, 2).addBox(3.1F, -6.0F, -8.0F, 0.0F, 3.0F, 16.0F, p_170670_), PartPose.rotation((-(float)Math.PI / 6F), 0.0F, 0.0F)); partdefinition2.addOrReplaceChild("right_saddle_line", CubeListBuilder.create().texOffs(32, 2).addBox(-3.1F, -6.0F, -8.0F, 0.0F, 3.0F, 16.0F, p_170670_), PartPose.rotation((-(float)Math.PI / 6F), 0.0F, 0.0F)); partdefinition2.addOrReplaceChild("head_saddle", CubeListBuilder.create().texOffs(1, 1).addBox(-3.0F, -11.0F, -1.9F, 6.0F, 5.0F, 6.0F, new CubeDeformation(0.2F)), PartPose.ZERO); partdefinition2.addOrReplaceChild("mouth_saddle_wrap", CubeListBuilder.create().texOffs(19, 0).addBox(-2.0F, -11.0F, -4.0F, 4.0F, 5.0F, 2.0F, new CubeDeformation(0.2F)), PartPose.ZERO); partdefinition3.addOrReplaceChild("left_ear", CubeListBuilder.create().texOffs(19, 16).addBox(0.55F, -13.0F, 4.0F, 2.0F, 3.0F, 1.0F, new CubeDeformation(-0.001F)), PartPose.ZERO); partdefinition3.addOrReplaceChild("right_ear", CubeListBuilder.create().texOffs(19, 16).addBox(-2.55F, -13.0F, 4.0F, 2.0F, 3.0F, 1.0F, new CubeDeformation(-0.001F)), PartPose.ZERO); return meshdefinition; } public void setupAnim(T p_102785_, float p_102786_, float p_102787_, float p_102788_, float p_102789_, float p_102790_) { boolean flag = p_102785_.isSaddled(); boolean flag1 = p_102785_.isVehicle(); for(ModelPart modelpart : this.saddleParts) { modelpart.visible = flag; } for(ModelPart modelpart1 : this.ridingParts) { modelpart1.visible = flag1 && flag; } this.body.y = 11.0F; } public Iterable<ModelPart> headParts() { return ImmutableList.of(this.headParts); } protected Iterable<ModelPart> bodyParts() { return ImmutableList.of(this.body, this.rightHindLeg, this.leftHindLeg, this.rightFrontLeg, this.leftFrontLeg, this.rightHindBabyLeg, this.leftHindBabyLeg, this.rightFrontBabyLeg, this.leftFrontBabyLeg); } public void prepareMobModel(T p_102780_, float p_102781_, float p_102782_, float p_102783_) { super.prepareMobModel(p_102780_, p_102781_, p_102782_, p_102783_); float f = Mth.rotlerp(p_102780_.yBodyRotO, p_102780_.yBodyRot, p_102783_); float f1 = Mth.rotlerp(p_102780_.yHeadRotO, p_102780_.yHeadRot, p_102783_); float f2 = Mth.lerp(p_102783_, p_102780_.xRotO, p_102780_.getXRot()); float f3 = f1 - f; float f4 = f2 * ((float)Math.PI / 180F); if (f3 > 20.0F) { f3 = 20.0F; } if (f3 < -20.0F) { f3 = -20.0F; } if (p_102782_ > 0.2F) { f4 += Mth.cos(p_102781_ * 0.4F) * 0.15F * p_102782_; } float f5 = p_102780_.getEatAnim(p_102783_); float f6 = p_102780_.getStandAnim(p_102783_); float f7 = 1.0F - f6; float f8 = p_102780_.getMouthAnim(p_102783_); boolean flag = p_102780_.tailCounter != 0; float f9 = (float)p_102780_.tickCount + p_102783_; this.headParts.y = 4.0F; this.headParts.z = -12.0F; this.body.xRot = 0.0F; this.headParts.xRot = ((float)Math.PI / 6F) + f4; this.headParts.yRot = f3 * ((float)Math.PI / 180F); float f10 = p_102780_.isInWater() ? 0.2F : 1.0F; float f11 = Mth.cos(f10 * p_102781_ * 0.6662F + (float)Math.PI); float f12 = f11 * 0.8F * p_102782_; float f13 = (1.0F - Math.max(f6, f5)) * (((float)Math.PI / 6F) + f4 + f8 * Mth.sin(f9) * 0.05F); this.headParts.xRot = f6 * (0.2617994F + f4) + f5 * (2.1816616F + Mth.sin(f9) * 0.05F) + f13; this.headParts.yRot = f6 * f3 * ((float)Math.PI / 180F) + (1.0F - Math.max(f6, f5)) * this.headParts.yRot; this.headParts.y = f6 * -4.0F + f5 * 11.0F + (1.0F - Math.max(f6, f5)) * this.headParts.y; this.headParts.z = f6 * -4.0F + f5 * -12.0F + (1.0F - Math.max(f6, f5)) * this.headParts.z; this.body.xRot = f6 * (-(float)Math.PI / 4F) + f7 * this.body.xRot; float f14 = 0.2617994F * f6; float f15 = Mth.cos(f9 * 0.6F + (float)Math.PI); this.leftFrontLeg.y = 2.0F * f6 + 14.0F * f7; this.leftFrontLeg.z = -6.0F * f6 - 10.0F * f7; this.rightFrontLeg.y = this.leftFrontLeg.y; this.rightFrontLeg.z = this.leftFrontLeg.z; float f16 = ((-(float)Math.PI / 3F) + f15) * f6 + f12 * f7; float f17 = ((-(float)Math.PI / 3F) - f15) * f6 - f12 * f7; this.leftHindLeg.xRot = f14 - f11 * 0.5F * p_102782_ * f7; this.rightHindLeg.xRot = f14 + f11 * 0.5F * p_102782_ * f7; this.leftFrontLeg.xRot = f16; this.rightFrontLeg.xRot = f17; this.tail.xRot = ((float)Math.PI / 6F) + p_102782_ * 0.75F; this.tail.y = -5.0F + p_102782_; this.tail.z = 2.0F + p_102782_ * 2.0F; if (flag) { this.tail.yRot = Mth.cos(f9 * 0.7F); } else { this.tail.yRot = 0.0F; } this.rightHindBabyLeg.y = this.rightHindLeg.y; this.rightHindBabyLeg.z = this.rightHindLeg.z; this.rightHindBabyLeg.xRot = this.rightHindLeg.xRot; this.leftHindBabyLeg.y = this.leftHindLeg.y; this.leftHindBabyLeg.z = this.leftHindLeg.z; this.leftHindBabyLeg.xRot = this.leftHindLeg.xRot; this.rightFrontBabyLeg.y = this.rightFrontLeg.y; this.rightFrontBabyLeg.z = this.rightFrontLeg.z; this.rightFrontBabyLeg.xRot = this.rightFrontLeg.xRot; this.leftFrontBabyLeg.y = this.leftFrontLeg.y; this.leftFrontBabyLeg.z = this.leftFrontLeg.z; this.leftFrontBabyLeg.xRot = this.leftFrontLeg.xRot; boolean flag1 = p_102780_.isBaby(); this.rightHindLeg.visible = !flag1; this.leftHindLeg.visible = !flag1; this.rightFrontLeg.visible = !flag1; this.leftFrontLeg.visible = !flag1; this.rightHindBabyLeg.visible = flag1; this.leftHindBabyLeg.visible = flag1; this.rightFrontBabyLeg.visible = flag1; this.leftFrontBabyLeg.visible = flag1; this.body.y = flag1 ? 10.8F : 0.0F; } }   Renderer @OnlyIn(Dist.CLIENT) public final class TutorialHorseRenderer extends ModAbstractHorseRenderer<TutorialHorse, TutorialHorseModel<TutorialHorse>> { private static final Map<Variant, ResourceLocation> LOCATION_BY_VARIANT = Util.make(Maps.newEnumMap(Variant.class), (p_114874_) -> { p_114874_.put(Variant.WHITE, new ResourceLocation("textures/entity/horse/horse_white.png")); p_114874_.put(Variant.CREAMY, new ResourceLocation("textures/entity/horse/horse_creamy.png")); p_114874_.put(Variant.CHESTNUT, new ResourceLocation("textures/entity/horse/horse_chestnut.png")); p_114874_.put(Variant.BROWN, new ResourceLocation("textures/entity/horse/horse_brown.png")); p_114874_.put(Variant.BLACK, new ResourceLocation("textures/entity/horse/horse_black.png")); p_114874_.put(Variant.GRAY, new ResourceLocation("textures/entity/horse/horse_gray.png")); p_114874_.put(Variant.DARKBROWN, new ResourceLocation("textures/entity/horse/horse_darkbrown.png")); }); public TutorialHorseRenderer(EntityRendererProvider.Context p_174167_) { super(p_174167_, new TutorialHorseModel<>(p_174167_.bakeLayer(ModEntityRenderers.HORSEE)), 1.1F); //this.addLayer(new HorseMarkingLayer(this)); //this.addLayer(new HorseArmorLayer(this, p_174167_.getModelSet())); } public ResourceLocation getTextureLocation(TutorialHorse p_114872_) { return LOCATION_BY_VARIANT.get(p_114872_.getVariant()); } } I'm trying to make the code equivalent to Vanilla, but I think I'm wrong. Please help me
    • Also please show the registration of the MenuType.
    • Same as before, NetworkHooks.openGui.
    • Show a screenshot of your launcher. Are you sure that is the complete log? Please also post the launcher log.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.