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

[1.8] Custom Armour Model Rendering


JoieNL
 Share

Recommended Posts

Recently I've gotten into making custom models for my armour sets. I have used this tutorial to guide me. Now, the armour works mostly fine. The only thing that goes wrong is that the armour model does not change according to the entity wearing it. That is, it is always rendered small, the arms always move (even on armour stands) and the armour does not follow the player sneaking, holding an item, guarding with a sword, etc. I do realise that some of these things can be circumvented by changing certain fields in ModelBiped and ModelBase (e.g. isChild, isSneaking), but these fields do not cover every movement. How would I go about making the armour render correctly according to the attributes of the entity wearing it? Thanks in advance for any help!

 

Here are the classes involved for reference:

 

ModelElementalArmourIce.java:

Spoiler

public class ModelElementalArmourIce extends ModelBiped {

    public ModelElementalArmourIce(int slot, float scale) {
        super(scale, 0, 64, 64);

        ModelRenderer icyEyes = new ModelRenderer(this, 0, 32);
        icyEyes.addBox(-11F, -3F, 0F, 22, 8, 0);
        icyEyes.setRotationPoint(0F, -8F, -5.1F);
        icyEyes.setTextureSize(64, 64);
        icyEyes.mirror = true;
        setRotation(icyEyes, 0F, 0F);
        bipedHeadwear.addChild(icyEyes);

        ModelRenderer spike1 = new ModelRenderer(this, 48, 32);
        spike1.addBox(-0.5F, -0.5F, 0F, 1, 1, 4);
        spike1.setRotationPoint(1.5F, 2.5F, 2F);
        spike1.setTextureSize(64, 64);
        setRotation(spike1, 0.2617994F, 0.0872665F);
        bipedBody.addChild(spike1);

        ModelRenderer spike2 = new ModelRenderer(this, 48, 32);
        spike2.addBox(-0.5F, -0.5F, 0F, 1, 1, 4);
        spike2.setRotationPoint(-1.5F, 2.5F, 2F);
        spike2.setTextureSize(64, 64);
        spike2.mirror = true;
        setRotation(spike2, 0.2617994F, -0.0872665F);
        bipedBody.addChild(spike2);

        ModelRenderer spike3 = new ModelRenderer(this, 48, 32);
        spike3.addBox(-0.5F, -0.5F, 0F, 1, 1, 4);
        spike3.setRotationPoint(2F, 6F, 2F);
        spike3.setTextureSize(64, 64);
        setRotation(spike3, 0F, 0.1745329F);
        bipedBody.addChild(spike3);

        ModelRenderer spike4 = new ModelRenderer(this, 48, 32);
        spike4.addBox(-0.5F, -0.5F, 0F, 1, 1, 4);
        spike4.setRotationPoint(-2F, 6F, 2F);
        spike4.setTextureSize(64, 64);
        spike4.mirror = true;
        setRotation(spike4, 0F, -0.1745329F);
        bipedBody.addChild(spike4);

        ModelRenderer spike5 = new ModelRenderer(this, 48, 32);
        spike5.addBox(-0.5F, -0.5F, 0F, 1, 1, 4);
        spike5.setRotationPoint(1.5F, 9.5F, 2F);
        spike5.setTextureSize(64, 64);
        setRotation(spike5, -0.2617994F, 0.0872665F);
        bipedBody.addChild(spike5);

        ModelRenderer spike6 = new ModelRenderer(this, 48, 32);
        spike6.addBox(-0.5F, -0.5F, 0F, 1, 1, 4);
        spike6.setRotationPoint(-1.5F, 9.5F, 2F);
        spike6.setTextureSize(64, 64);
        spike6.mirror = true;
        setRotation(spike6, -0.2617994F, -0.0872665F);
        bipedBody.addChild(spike6);

        ModelRenderer clawRightFront = new ModelRenderer(this, 44, 32);
        clawRightFront.addBox(0F, 0F, -0.5F, 1, 5, 1);
        clawRightFront.setRotationPoint(-3F, 10F, -0.7F);
        clawRightFront.setTextureSize(64, 64);
        clawRightFront.mirror = true;
        setRotation(clawRightFront, 0F, 0F);
        bipedRightArm.addChild(clawRightFront);

        ModelRenderer clawRightBack = new ModelRenderer(this, 44, 32);
        clawRightBack.addBox(0F, 0F, -0.5F, 1, 5, 1);
        clawRightBack.setRotationPoint(-3F, 10F, 0.67F);
        clawRightBack.setTextureSize(64, 64);
        clawRightBack.mirror = true;
        setRotation(clawRightBack, 0F, 0F);
        bipedRightArm.addChild(clawRightBack);

        ModelRenderer clawLeftFront = new ModelRenderer(this, 44, 32);
        clawLeftFront.addBox(-1F, 0F, -0.5F, 1, 5, 1);
        clawLeftFront.setRotationPoint(3F, 10F, -0.7F);
        clawLeftFront.setTextureSize(64, 64);
        setRotation(clawLeftFront, 0F, 0F);
        bipedLeftArm.addChild(clawLeftFront);

        ModelRenderer clawLeftBack = new ModelRenderer(this, 44, 32);
        clawLeftBack.addBox(-1F, 0F, -0.5F, 1, 5, 1);
        clawLeftBack.setRotationPoint(3F, 10F, 0.7F);
        clawLeftBack.setTextureSize(64, 64);
        setRotation(clawLeftBack, 0F, 0F);
        bipedLeftArm.addChild(clawLeftBack);

        switch (slot) {
            case 0:
                bipedHeadwear.showModel = true;
                bipedHead.showModel = true;
                bipedBody.showModel = false;
                bipedLeftArm.showModel = false;
                bipedRightArm.showModel = false;
                bipedLeftLeg.showModel = false;
                bipedRightLeg.showModel = false;
                break;
            case 1:
                bipedHeadwear.showModel = false;
                bipedHead.showModel = false;
                bipedBody.showModel = true;
                bipedLeftArm.showModel = true;
                bipedRightArm.showModel = true;
                bipedLeftLeg.showModel = false;
                bipedRightLeg.showModel = false;
                break;
            case 2:
                bipedHeadwear.showModel = false;
                bipedHead.showModel = false;
                bipedBody.showModel = true;
                bipedLeftArm.showModel = false;
                bipedRightArm.showModel = false;
                bipedLeftLeg.showModel = true;
                bipedRightLeg.showModel = true;

                spike1.showModel = false;
                spike2.showModel = false;
                spike3.showModel = false;
                spike4.showModel = false;
                spike5.showModel = false;
                spike6.showModel = false;
                break;
            case 3:
                bipedHeadwear.showModel = false;
                bipedHead.showModel = false;
                bipedBody.showModel = false;
                bipedLeftArm.showModel = false;
                bipedRightArm.showModel = false;
                bipedLeftLeg.showModel = true;
                bipedRightLeg.showModel = true;
                break;
        }
    }

    public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
        super.render(entity, f, f1, f2, f3, f4, f5);
        super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    }

    private void setRotation(ModelRenderer model, float x, float y) {
        model.rotateAngleX = x;
        model.rotateAngleY = y;
        model.rotateAngleZ = 0F;
    }
}

 

 

ElementalArmourItem.java:

Spoiler

[unimportant contructors and the like]

@Override
@SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase entity, ItemStack stack, int armorSlot) {
  GL11.glPushMatrix();
  GL11.glEnable(GL11.GL_BLEND);
  GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  GL11.glPopMatrix();
  ModelElementalArmourIce model = ClientProxy.getElementalArmourModel(4 - armorSlot);
  return model;
}

 

 

ClientProxy.java:

Spoiler

public class ClientProxy extends CommonProxy {

    private static ModelElementalArmourIce[] elementalArmour;

    [preInit]

    @Override
    public void init(FMLInitializationEvent e) {
        super.init(e);
        elementalArmour = new ModelElementalArmourIce[4];
        elementalArmour[0] = new ModelElementalArmourIce(0, 0.5F);
        elementalArmour[1] = new ModelElementalArmourIce(1, 1.0F);
        elementalArmour[2] = new ModelElementalArmourIce(2, 0.5F);
        elementalArmour[3] = new ModelElementalArmourIce(3, 0.5F);
        [other stuff]
    }

    [postInit]

    public static ModelElementalArmourIce getElementalArmourModel(int slot) {
        return elementalArmour[slot];
    }
}

 

 

Edited by JoieNL
Link to comment
Share on other sites

A few days have passed now and I have made little progress. I have found a way to easily apply most important attributes that the model can have:

@Override
    @SideOnly(Side.CLIENT)
    public ModelBiped getArmorModel(EntityLivingBase entity, ItemStack stack, int armorSlot) {
        [...]
        ModelElementalArmourIce model = ClientProxy.getElementalArmourModel(4 - armorSlot);
        ModelBase defaultModel = RendererLivingEntity.class.cast(Minecraft.getMinecraft().getRenderManager().getEntityRenderObject(entity)).getMainModel();
        model.setModelAttributes(defaultModel);
        return model;
    }

This way of doing things does not look particularly beautiful and I would not be surprised if there was some better way of retrieving an entity's default model.

 

Of course, my problem still stands. I have experimented some more with the armour, and have been able to pinpoint several issues that all relate to the entity wearing the armour.

- On armour stands, the helmet's front always faces south and the arms move (idle animation).

- For entities that have their arms sticking forward (e.g. zombies, skeletons), the armour's arms simply hang downwards.

- Zombie villagers also have their heads sticking out the top of the helmet.

 

I will persist in trying to find a solution. I hope someone may be able to help me out.

Link to comment
Share on other sites

Why are you casting that way? 

(ModelBase)foo is sufficient. 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Right, that was just a thing I left there for no reason. The casting is to RendererLivingEntity by the way, not ModelBase. Here's the preferred thing:

ModelBase defaultModel = ((RendererLivingEntity) Minecraft.getMinecraft().getRenderManager().getEntityRenderObject(entity)).getMainModel();

The weird cast was there because I was getting confused with both RendererLiving and Render being generic classes.

 

Anyway, this is kind of besides the point of the thread, and I still haven't made any progress on the topic.

Edited by JoieNL
Link to comment
Share on other sites

36 minutes ago, JoieNL said:

Right, that was just a thing I left there for no reason. The casting is to RendererLivingEntity by the way, not ModelBase.

you are correct, I'm on a tablet right now, so things are tricky. 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

I thought maybe another mod's code might help me out. I know Twilight Forest has some custom armour models and luckily for me the source code is on GitHub. I will look into things a bit more and report my findings.

Edited by JoieNL
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

    • Posting again to finish this thread as I've found a solution for my problem. Don't know why it was having an issue with Java but uninstalled my most recent update of java and switched back to Java 17.02 Here's a link to the version of Java I'm now using https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe Hope it works for whoever is looking for a solution.
    • Hello there, i have an issue. I want to add custom 3d model to armor(I want to create addon that replace armor with samurai armor in Gobber mod). Here is the code: package com.kwpugh.gobber2.items.armor; import java.util.List; import javax.annotation.Nullable; import com.kwpugh.gobber2.config.GobberConfigBuilder; import com.kwpugh.gobber2.init.ItemInit; import com.kwpugh.gobber2.items.armor.models.GobberSamurai; import com.kwpugh.gobber2.util.PlayerSpecialAbilities; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.ItemStack; import net.minecraft.world.effect.MobEffects; import net.minecraft.network.chat.Component; import net.minecraft.ChatFormatting; import net.minecraft.client.model.HumanoidModel; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.IItemRenderProperties; import net.minecraft.world.item.Item.Properties; public class ItemCustomArmorNether extends ArmorItem { public ItemCustomArmorNether(ArmorMaterial materialIn, EquipmentSlot slots, Properties builder) { super(materialIn, slots, builder); } boolean enablePerks = GobberConfigBuilder.ENABLE_GOBBER_NETHER_ARMOR_HEALTH_PERKS.get(); int hunger = GobberConfigBuilder.GOBBER_NETHER_ARMOR_HUNGER.get(); double saturation = GobberConfigBuilder.GOBBER_NETHER_ARMOR_SATURATION.get(); @Override public void onArmorTick(final ItemStack stack, final Level world, final Player player) { if(!enablePerks) return; ItemStack head = player.getItemBySlot(EquipmentSlot.HEAD); ItemStack chest = player.getItemBySlot(EquipmentSlot.CHEST); ItemStack legs = player.getItemBySlot(EquipmentSlot.LEGS); ItemStack feet = player.getItemBySlot(EquipmentSlot.FEET); //Full Set if(head.getItem() == ItemInit.GOBBER2_HELMET_NETHER.get() && chest.getItem() == ItemInit.GOBBER2_CHESTPLATE_NETHER.get() && legs.getItem() == ItemInit.GOBBER2_LEGGINGS_NETHER.get() && feet.getItem() == ItemInit.GOBBER2_BOOTS_NETHER.get()) { if(player.getEffect(MobEffects.POISON) != null) { player.removeEffect(MobEffects.POISON); } if(player.getEffect(MobEffects.WITHER) != null) { player.removeEffect(MobEffects.WITHER); } } //Check ArmorUtil for additional perks applied to armor //Helmet if(head.getItem() == ItemInit.GOBBER2_HELMET_NETHER.get()) { PlayerSpecialAbilities.giveYellowHearts(world, player, stack, 4, 0.33F); PlayerSpecialAbilities.giveRegenEffect(world, player, stack, hunger, (float) saturation); } //Chestplate if(chest.getItem() == ItemInit.GOBBER2_CHESTPLATE_NETHER.get()) { // TBD } //Leggings if(legs.getItem() == ItemInit.GOBBER2_LEGGINGS_NETHER.get()) { } else { } //Boots if(feet.getItem() == ItemInit.GOBBER2_BOOTS_NETHER.get()) { } else { } } @Override public boolean isBookEnchantable(ItemStack stack, ItemStack book) { return true; } @Override public boolean isValidRepairItem(ItemStack toRepair, ItemStack repair) { return repair.getItem() == ItemInit.GOBBER2_INGOT_NETHER.get(); } @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, @Nullable Level worldIn, List<Component> tooltip, TooltipFlag flagIn) { super.appendHoverText(stack, worldIn, tooltip, flagIn); if(enablePerks) { tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line2").withStyle(ChatFormatting.LIGHT_PURPLE))); tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line3").withStyle(ChatFormatting.LIGHT_PURPLE))); tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line4").withStyle(ChatFormatting.LIGHT_PURPLE))); tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line5").withStyle(ChatFormatting.LIGHT_PURPLE))); tooltip.add((new TranslatableComponent("item.gobber2.gobber2_armor_nether.line6").withStyle(ChatFormatting.GOLD))); } } @Override public void initializeClient(java.util.function.Consumer<net.minecraftforge.client.IItemRenderProperties> consumer) { consumer.accept(new IItemRenderProperties() { @Override public <A extends HumanoidModel<?>> A getArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlot armorSlot, A _default) { if(armorSlot == EquipmentSlot.CHEST) { return (A) new GobberSamurai(); } return null; } }); } @Override public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { return "gobber2.models.armor.GobberSamurai" + (slot == EquipmentSlot.HEAD ? "2" : "1") + ".png"; } } The problem is in getArmorModel method and in return (A) new GobberSamurai(); It says "The constructor GobberSamurai() is undefined".  Here is my model class:   package com.kwpugh.gobber2.items.armor.models; import java.util.List; import javax.annotation.Nullable; import com.kwpugh.gobber2.config.GobberConfigBuilder; import com.kwpugh.gobber2.init.ItemInit; import com.kwpugh.gobber2.util.PlayerSpecialAbilities; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.ItemStack; import net.minecraft.world.effect.MobEffects; import net.minecraft.network.chat.Component; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; import net.minecraft.world.item.Item.Properties; public class GobberSamurai<T extends Entity> extends EntityModel<T> { // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("modid", "gobbersamurai"), "main"); private final ModelPart Head; private final ModelPart Body; private final ModelPart RightArm; private final ModelPart LeftArm; private final ModelPart RightLeg; private final ModelPart LeftLeg; public GobberSamurai(ModelPart root) { this.Head = root.getChild("Head"); this.Body = root.getChild("Body"); this.RightArm = root.getChild("RightArm"); this.LeftArm = root.getChild("LeftArm"); this.RightLeg = root.getChild("RightLeg"); this.LeftLeg = root.getChild("LeftLeg"); } public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); PartDefinition partdefinition = meshdefinition.getRoot(); PartDefinition Head = partdefinition.addOrReplaceChild("Head", CubeListBuilder.create().texOffs(1, 34).addBox(-5.0F, -9.0F, -5.0F, 10.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); PartDefinition cube_r1 = Head.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(1, 34).addBox(-3.2F, -0.225F, -5.0F, 5.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(5.8435F, -2.8805F, 0.0F, 0.0F, 0.0F, 1.1345F)); PartDefinition cube_r2 = Head.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(1, 34).addBox(-3.225F, -6.625F, -5.0F, 5.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -0.1594F, 0.0523F, -1.5708F, -0.4363F, 1.5708F)); PartDefinition cube_r3 = Head.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(1, 34).addBox(-6.0F, 5.0F, -5.0F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -1.5708F, 0.0F, 1.5708F)); PartDefinition cube_r4 = Head.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(42, 36).addBox(-1.2F, -0.5F, -1.5F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-6.3F, -4.3F, -5.6F, -2.313F, 0.0322F, 2.0649F)); PartDefinition cube_r5 = Head.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(1, 34).mirror().addBox(-1.8F, -0.225F, -5.0F, 5.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-5.8435F, -2.8805F, 0.0F, 0.0F, 0.0F, -1.1345F)); PartDefinition cube_r6 = Head.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(42, 36).mirror().addBox(-1.8F, -0.5F, -1.5F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(6.3F, -4.3F, -5.6F, -2.313F, -0.0322F, -2.0649F)); PartDefinition Body = partdefinition.addOrReplaceChild("Body", CubeListBuilder.create().texOffs(11, 35).addBox(4.0F, 3.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) .texOffs(11, 35).addBox(-5.0F, 8.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) .texOffs(11, 35).addBox(4.0F, 8.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) .texOffs(11, 35).addBox(-5.0F, 3.0F, -3.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) .texOffs(11, 35).addBox(-4.0F, 1.0F, -4.0F, 8.0F, 7.0F, 2.0F, new CubeDeformation(0.0F)) .texOffs(11, 35).addBox(-4.0F, 8.0F, -3.0F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(11, 35).addBox(-4.0F, 11.0F, -2.5F, 8.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(0, 32).addBox(-4.0F, 1.0F, 2.0F, 8.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); PartDefinition RightArm = partdefinition.addOrReplaceChild("RightArm", CubeListBuilder.create().texOffs(39, 2).addBox(-3.5F, -2.5F, -2.5F, 5.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)) .texOffs(39, 2).mirror().addBox(-1.5F, 3.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(39, 2).mirror().addBox(-3.5F, 3.5F, -2.5F, 2.0F, 6.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(39, 2).mirror().addBox(-1.5F, 6.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-5.0F, 2.0F, 0.0F)); PartDefinition cube_r7 = RightArm.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(1.5F, -1.0F, -3.5F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-2.5F, 0.0F, -3.5F, 5.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-4.5F, 1.0F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-6.5F, 1.5F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-4.0588F, -1.8378F, 0.0F, 0.0F, 0.0F, -1.1345F)); PartDefinition LeftArm = partdefinition.addOrReplaceChild("LeftArm", CubeListBuilder.create().texOffs(39, 2).addBox(-1.5F, -2.5F, -2.5F, 5.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)) .texOffs(39, 2).addBox(1.5F, 3.5F, -2.5F, 2.0F, 6.0F, 5.0F, new CubeDeformation(0.0F)) .texOffs(39, 2).addBox(-1.5F, 3.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)) .texOffs(39, 2).addBox(-1.5F, 6.5F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(5.0F, 2.0F, 0.0F)); PartDefinition cube_r8 = LeftArm.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(10, 37).addBox(3.5F, 1.5F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(1.5F, 1.0F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(-2.5F, -1.0F, -3.5F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(-2.5F, 0.0F, -3.5F, 5.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(4.0588F, -1.8378F, 0.0F, 0.0F, 0.0F, 1.1345F)); PartDefinition RightLeg = partdefinition.addOrReplaceChild("RightLeg", CubeListBuilder.create(), PartPose.offset(-1.9F, 12.0F, 0.0F)); PartDefinition cube_r9 = RightLeg.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(-4.9F, 10.65F, 9.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-4.9F, 11.65F, 11.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-4.9F, 9.65F, 7.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.9F, -11.8378F, 9.0588F, -1.1345F, 0.0F, 0.0F)); PartDefinition cube_r10 = RightLeg.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(-4.9F, 10.65F, -12.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-4.9F, 11.65F, -14.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-2.9F, 10.65F, -15.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-2.9F, 11.65F, -17.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-2.9F, 9.65F, -12.3F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-4.9F, 9.65F, -10.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.9F, -11.8378F, -9.0588F, 1.1345F, 0.0F, 0.0F)); PartDefinition cube_r11 = RightLeg.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(10, 37).mirror().addBox(-16.0F, 11.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-14.0F, 10.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(10, 37).mirror().addBox(-12.0F, 9.0F, -2.5F, 4.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.1588F, -11.8378F, 0.0F, 0.0F, 0.0F, -1.1345F)); PartDefinition LeftLeg = partdefinition.addOrReplaceChild("LeftLeg", CubeListBuilder.create(), PartPose.offset(1.9F, 12.0F, 0.0F)); PartDefinition cube_r12 = LeftLeg.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(10, 37).addBox(13.0F, 11.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(11.0F, 10.0F, -2.5F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(8.0F, 9.0F, -2.5F, 4.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.1588F, -11.8378F, 0.0F, 0.0F, 0.0F, 1.1345F)); PartDefinition cube_r13 = LeftLeg.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(10, 37).addBox(-0.1F, 9.65F, -12.3F, 3.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(2.9F, 11.65F, -14.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(-0.1F, 11.65F, -17.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(2.9F, 10.65F, -12.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(-0.1F, 10.65F, -15.3F, 3.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(2.9F, 9.65F, -10.3F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.9F, -11.8378F, -9.0588F, 1.1345F, 0.0F, 0.0F)); PartDefinition cube_r14 = LeftLeg.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(10, 37).addBox(-0.1F, 9.65F, 7.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(-0.1F, 11.65F, 11.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)) .texOffs(10, 37).addBox(-0.1F, 10.65F, 9.5F, 5.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.9F, -11.8378F, 9.0588F, -1.1345F, 0.0F, 0.0F)); return LayerDefinition.create(meshdefinition, 64, 64); } @Override public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { } @Override public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { Head.render(poseStack, buffer, packedLight, packedOverlay); Body.render(poseStack, buffer, packedLight, packedOverlay); RightArm.render(poseStack, buffer, packedLight, packedOverlay); LeftArm.render(poseStack, buffer, packedLight, packedOverlay); RightLeg.render(poseStack, buffer, packedLight, packedOverlay); LeftLeg.render(poseStack, buffer, packedLight, packedOverlay); } } I just don't know what to do now, I have searched everywhere but I have found nothing for 1.18.1 version.
    • I've been trying for the past hour to get one of these Modpacks to work, and after running the Serverrun.bat it gets all the way through the process on both Modpacks before it gives me the following Error Message. Error: Could not find or load main class @libraries.net.minecraftforge.forge.1.18.1-39.0.22.win_args.txt Any help would be great!  
    • The game crashed while playing. please help I don't know how to. ---- Minecraft Crash Report ---- // Shall we play a game? Time: 1/29/22, 1:08 AM Description: Exception in server tick loop java.lang.NoSuchMethodError: 'net.minecraft.nbt.CompoundTag net.minecraft.world.level.block.entity.BlockEntity.save(net.minecraft.nbt.CompoundTag)'     at ht.treechop.common.block.ChoppedLogBlock$Entity.save(ChoppedLogBlock.java:291) ~[TreeChop-Mod-1.18.1.jar%2367!/:0.15.3] {re:classloading}     at ht.treechop.common.block.ChoppedLogBlock$Entity.m_5995_(ChoppedLogBlock.java:335) ~[TreeChop-Mod-1.18.1.jar%2367!/:0.15.3] {re:classloading}     at net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket.m_195642_(ClientboundBlockEntityDataPacket.java:21) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:classloading}     at net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket.m_195640_(ClientboundBlockEntityDataPacket.java:25) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:classloading}     at ht.treechop.common.block.ChoppedLogBlock$Entity.getUpdatePacket(ChoppedLogBlock.java:328) ~[TreeChop-Mod-1.18.1.jar%2367!/:0.15.3] {re:classloading}     at ht.treechop.common.block.ChoppedLogBlock$Entity.m_183216_(ChoppedLogBlock.java:260) ~[TreeChop-Mod-1.18.1.jar%2367!/:0.15.3] {re:classloading}     at net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(ForgeHooks.java:562) ~[forge-1.18.1-39.0.62-universal.jar%2374!/:?] {re:classloading}     at net.minecraft.server.level.ServerPlayerGameMode.m_9280_(ServerPlayerGameMode.java:227) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:computing_frames,re:classloading}     at net.minecraft.server.level.ServerPlayerGameMode.m_9286_(ServerPlayerGameMode.java:217) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:computing_frames,re:classloading}     at net.minecraft.server.level.ServerPlayerGameMode.m_7391_(ServerPlayerGameMode.java:187) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:computing_frames,re:classloading}     at net.minecraft.server.network.ServerGamePacketListenerImpl.m_7502_(ServerGamePacketListenerImpl.java:945) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:classloading}     at net.minecraft.network.protocol.game.ServerboundPlayerActionPacket.m_5797_(ServerboundPlayerActionPacket.java:34) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:classloading}     at net.minecraft.network.protocol.game.ServerboundPlayerActionPacket.m_5797_(ServerboundPlayerActionPacket.java:8) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:classloading}     at net.minecraft.network.protocol.PacketUtils.m_131356_(PacketUtils.java:21) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:classloading}     at net.minecraft.server.TickTask.run(TickTask.java:18) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:151) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}     at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,re:computing_frames,re:classloading}     at net.minecraft.server.MinecraftServer.m_6367_(MinecraftServer.java:765) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_6367_(MinecraftServer.java:161) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}     at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:125) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}     at net.minecraft.server.MinecraftServer.m_129961_(MinecraftServer.java:748) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_7245_(MinecraftServer.java:742) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}     at net.minecraft.util.thread.BlockableEventLoop.m_18699_(BlockableEventLoop.java:110) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}     at net.minecraft.server.MinecraftServer.m_130012_(MinecraftServer.java:727) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:672) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_177918_(MinecraftServer.java:258) ~[client-1.18.1-20211210.034407-srg.jar%2370!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}     at java.lang.Thread.run(Thread.java:833) [?:?] {re:mixin} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.18.1     Minecraft Version ID: 1.18.1     Operating System: Windows 10 (amd64) version 10.0     Java Version: 17.0.1, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 2163132464 bytes (2062 MiB) / 6643777536 bytes (6336 MiB) up to 8589934592 bytes (8192 MiB)     CPUs: 8     Processor Vendor: GenuineIntel     Processor Name: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz     Identifier: Intel64 Family 6 Model 142 Stepping 11     Microarchitecture: whiskey Lake     Frequency (GHz): 1.99     Number of physical packages: 1     Number of physical CPUs: 4     Number of logical CPUs: 8     Graphics card #0 name: Intel(R) UHD Graphics 620     Graphics card #0 vendor: Intel Corporation (0x8086)     Graphics card #0 VRAM (MB): 1024.00     Graphics card #0 deviceId: 0x3ea0     Graphics card #0 versionInfo: DriverVersion=26.20.100.7926     Memory slot #0 capacity (MB): 8192.00     Memory slot #0 clockSpeed (GHz): 2.40     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 8192.00     Memory slot #1 clockSpeed (GHz): 2.40     Memory slot #1 type: DDR4     Virtual memory max (MB): 20670.30     Virtual memory used (MB): 17701.50     Swap memory total (MB): 4496.57     Swap memory used (MB): 717.27     JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx8G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     Server Running: true     Player Count: 1 / 8; [ServerPlayer['rocio12barcenas'/187, l='ServerLevel[New World]', x=82.38, y=75.00, z=-249.35]]     Data Packs: vanilla, mod:forge, mod:sereneseasons (incompatible), mod:mna (incompatible), mod:treechop (incompatible), mod:terrablender, mod:apotheosis (incompatible), mod:cfm, mod:jei, mod:bumblecore, mod:byg (incompatible), mod:torohealth (incompatible), mod:curios, mod:xaerominimap, mod:geckolib3 (incompatible), mod:xaeroworldmap, mod:placebo (incompatible), mod:dramaticdoors, mod:travelersbackpack, mod:foodsicles     Type: Integrated Server (map_client.txt)     Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge'     ModLauncher: 9.1.0+9.1.0+main.6690ee51     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:           mixin PLUGINSERVICE           eventbus PLUGINSERVICE           object_holder_definalize PLUGINSERVICE           runtime_enum_extender PLUGINSERVICE           capability_token_subclass PLUGINSERVICE           accesstransformer PLUGINSERVICE           runtimedistcleaner PLUGINSERVICE           mixin TRANSFORMATIONSERVICE           fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         javafml@null     Mod List:          client-1.18.1-20211210.034407-srg.jar             |Minecraft                     |minecraft                     |1.18.1              |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f         Serene-Seasons-Mod-1.18.1.jar                     |Serene Seasons                |sereneseasons                 |1.18.1-6.0.0.11     |DONE      |Manifest: NOSIGNATURE         Mana-and-Artifice-Mod-1.18.1.jar                  |Mana and Artifice             |mna                           |1.7.0.2             |DONE      |Manifest: NOSIGNATURE         TreeChop-Mod-1.18.1.jar                           |HT's TreeChop                 |treechop                      |0.15.3              |DONE      |Manifest: NOSIGNATURE         TerraBlender-forge-1.18.1-1.1.0.73.jar            |TerraBlender                  |terrablender                  |1.18.1-1.1.0.73     |DONE      |Manifest: NOSIGNATURE         Apotheosis-Mod-1.18.1.jar                         |Apotheosis                    |apotheosis                    |5.2.0               |DONE      |Manifest: NOSIGNATURE         MrCrayfishs-Furniture-Mod-1.18.1.jar              |MrCrayfish's Furniture Mod    |cfm                           |7.0.0-pre28         |DONE      |Manifest: NOSIGNATURE         jei-1.18.1-9.2.3.82.jar                           |Just Enough Items             |jei                           |9.2.3.82            |DONE      |Manifest: NOSIGNATURE         bumblecore-1.18.1-1.0.4.jar                       |Bumblecore                    |bumblecore                    |1.18.1-1.0.4        |DONE      |Manifest: NOSIGNATURE         Oh+The+Biomes+You'll+Go-forge-1.18.1-1.3.5.8.jar  |Oh The Biomes You'll Go       |byg                           |1.3.5.8             |DONE      |Manifest: NOSIGNATURE         forge-1.18.1-39.0.62-universal.jar                |Forge                         |forge                         |39.0.62             |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         torohealth-1.18-forge-2.jar                       |ToroHealth                    |torohealth                    |1.18-forge-2        |DONE      |Manifest: NOSIGNATURE         Curios-API-1.18.1.jar                             |Curios API                    |curios                        |1.18.1-5.0.6.0      |DONE      |Manifest: NOSIGNATURE         Xaeros_Minimap_22.1.0_Forge_1.18.jar              |Xaero's Minimap               |xaerominimap                  |22.1.0              |DONE      |Manifest: NOSIGNATURE         geckolib-1.18-forge-3.0.9.jar                     |GeckoLib                      |geckolib3                     |3.0.9               |DONE      |Manifest: NOSIGNATURE         XaerosWorldMap_1.20.0_Forge_1.18.jar              |Xaero's World Map             |xaeroworldmap                 |1.20.0              |DONE      |Manifest: NOSIGNATURE         Place2bo-1.18.1-6.0.5.jar                          |Placebo                       |placebo                       |6.0.5               |DONE      |Manifest: NOSIGNATURE         Dramatic-Doors-Mod-1.18.1.jar                     |Dramatic Doors                |dramaticdoors                 |1.18.1-1.5.0        |DONE      |Manifest: NOSIGNATURE         TravelersBackpack-1.18.1-7.0.1.jar                |Traveler's Backpack           |travelersbackpack             |7.0.1               |DONE      |Manifest: NOSIGNATURE         foodsicles-1.18.1-1.0.4.jar                       |Foodsicles                    |foodsicles                    |1.18.1-1.0.4        |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: d060c158-744d-48bd-ba52-bf8d49f5f8d2     FML: 39.0     Forge: net.minecraftforge:39.0.6
    • Hi guys! I currently have a project that I've been developing in a 'vanilla' environment that I'm actually looking to transfer over to Forge, simply because of how much better the experience would be using Forge. Before starting on this Forge mod, I was planning ahead and was looking at options for proxies, of which I would greatly like to use Velocity. In their docs and by asking around their Discord, they don't support support versions of Forge of 1.13 or later because of changes in the "handshake protocol". But I also really don't want to use an unsupported version of Forge, such as 1.12.2, to be able to use a proxy. I was pointed in the direction of potentially making my own client-side mod to allow Forge to be compatible with an updated proxy, such as Velocity. When asking for a direction for achieving this, I was told to have a look at how the Forge server implements logins and that the discrepancy might be with how modified the handshake protocol is. This sounds like quite the challenge to me and I'm completely up for trying to accomplish it. So for the sake of planning ahead and having a rough idea of how I could accomplish that when the time comes to work on it, has anyone else had experience with trying to achieve this? I appreciate any help or direction offered! Thanks! 
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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