Jump to content

1.12 How to Isolate Issues with Packets?


4sterism

Recommended Posts

People on my server have been getting this issue alot: java.lang.IndexOutOfBoundsException: readerIndex(32) + length(1) exceeds writerIndex(32): PooledUnsafeDirectByteBuf(ridx: 32, widx: 32, cap: 32). But the debug log doesnt provide anything useful for me to find the source of the problem. I know the problem is with one of my packets, how do I find the packet with the 32 index?

Link to comment
Share on other sites

9 hours ago, 4sterism said:

People on my server

Question:

Did you write your own mod

or

Do you just run a modded server?

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

8 hours ago, diesieben07 said:

The problem is that you are trying to read data where there is none. This usually means you have a mismatch between the data you are sending and the data you are trying to read on the other side.

Again: Show your code.

Will do, I look at all my Handlers and post up the one soon.

Link to comment
Share on other sites

 @Override
        public NBTTagCompound getNBT() {
            nbt.setFloat(MANA, mana);
            nbt.setFloat(ENERGY, energy);
            nbt.setInteger(LEVEL, level);
            nbt.setInteger(EXP, exp);
            nbt.setInteger(RARITY, rarity);
            nbt.setString(UUID, uuid);
            nbt.setString(NAME, name);
            nbt.setBoolean(MOB_SAVED_ONCE, true);
            nbt.setInteger(CURRENT_MAP_ID, currentMapId);
            nbt.setBoolean(EQUIPS_CHANGED, equipsChanged);
            nbt.setFloat(DMG_DONE_BY_NON_PLAYERS, dmgByNonPlayers);

            if (unit != null) {
                NBTTagCompound unitnbt = new NBTTagCompound();
                Writer.write(unitnbt, unit);
                nbt.setTag(UNIT_OBJECT, unitnbt);
            }
            if (kills != null) {
                NBTTagCompound killsnbt = new NBTTagCompound();
                Writer.write(killsnbt, kills);
                nbt.setTag(KILLS_OBJECT, killsnbt);
            }

            return nbt;

        }

        @Override
        public void setNBT(NBTTagCompound value) {
            this.nbt = value;
            this.mana = value.getFloat(MANA);
            this.energy = value.getFloat(ENERGY);
            this.level = value.getInteger(LEVEL);
            this.exp = value.getInteger(EXP);
            this.rarity = value.getInteger(RARITY);
            this.uuid = value.getString(UUID);
            this.name = value.getString(NAME);
            this.currentMapId = value.getInteger(CURRENT_MAP_ID);
            this.equipsChanged = value.getBoolean(EQUIPS_CHANGED);
            this.dmgByNonPlayers = value.getFloat(DMG_DONE_BY_NON_PLAYERS);

            NBTTagCompound object_nbt = (NBTTagCompound) this.nbt.getTag(UNIT_OBJECT);
            if (object_nbt != null) {
                unit = new Unit();
                Reader.read(object_nbt, unit);
            }

            NBTTagCompound kills_nbt = (NBTTagCompound) this.nbt.getTag(KILLS_OBJECT);
            if (kills_nbt != null) {
                kills = new PlayerMapKillsData();
                Reader.read(kills_nbt, kills);
            }

        }

 

Link to comment
Share on other sites

8 hours ago, diesieben07 said:

The problem is that you are trying to read data where there is none. This usually means you have a mismatch between the data you are sending and the data you are trying to read on the other side.

Again: Show your code.

Ok, Ive looked through the packets and noticed this one read and writed differently. The reader is missing Mobd saved once. Is this the problem?

Edited by 4sterism
Link to comment
Share on other sites

package com.robertx22.network;

import com.robertx22.mmorpg.Main;
import com.robertx22.uncommon.capability.EntityData;
import com.robertx22.uncommon.capability.EntityData.UnitData;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class EntityUnitPackage implements IMessage {

    public int id;
    public NBTTagCompound nbt;

    public EntityUnitPackage() {

    }

    public EntityUnitPackage(Entity entity) {
        this.id = entity.getEntityId();
        this.nbt = entity.getCapability(EntityData.Data, null).getNBT();
    }

    public EntityUnitPackage(Entity entity, UnitData data) {
        this.id = entity.getEntityId();
        this.nbt = data.getNBT();
    }

    @Override
    public void fromBytes(ByteBuf buf) {
        nbt = ByteBufUtils.readTag(buf);
        id = nbt.getInteger("id");
    }

    @Override
    public void toBytes(ByteBuf buf) {
        nbt.setInteger("id", id);
        ByteBufUtils.writeTag(buf, nbt);

    }

    public static class Handler implements IMessageHandler<EntityUnitPackage, IMessage> {

        @Override
        public IMessage onMessage(EntityUnitPackage message, MessageContext ctx) {

            Runnable noteThread = new Runnable() {
                @Override
                public void run() {
                    try {

                        final EntityPlayer player = Main.proxy.getPlayerEntityFromContext(ctx);

                        if (player != null && player.world != null) {
                            Entity entity = player.world.getEntityByID(message.id);

                            EntityLivingBase en = (EntityLivingBase) entity;

                            if (en != null) {
                                en.getCapability(EntityData.Data, null).setNBT(message.nbt);

                            }

                        }

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

            };
            ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
            scheduler.schedule(noteThread, 1, TimeUnit.SECONDS);

            return null;
        }

    }
}
Edited by 4sterism
Link to comment
Share on other sites

its the nbt data associated with this packet. I deleted one entry and when it errored again, this time with was 31 instead of 32, so they're related. 

What I dont get is why readerIndex(31) + length(1) exceeds writerIndex(31). Where did that length 1 come from?

 

Link to comment
Share on other sites

3 minutes ago, diesieben07 said:

This is terrible in so many ways.

 

  1. It spawns a new thread every time. Spawning threads is very expensive.
  2. It does not properly dispose the created ExecutorService. Guava does this for you in this case through the finalize method (which is also just terrible, because it makes the GC work much harder to clean up this object), but it's still bad coding style.
  3. It's accessing MInecraft code from a completely random thread. Minecraft code must (99% of the time) only be accessed from it's main thread.

I'll leave out the fact that just dumping the whole capability NBT down the network is stupid (only sync what you need and don't use NBT for it if you can help it).

That error means that something is trying to read one byte (length 1), but there are 0 bytes available (because both readerIndex and writerIndex are 31). Read the Javadoc on ByteBuf, it explains how readerIndex and writerIndex work.

 

Show where you register your packets and where you send them.

I didn't write this code, but I'm willing to learn how to fix and clean it up.

As for where the code is registered.

MinecraftForge.EVENT_BUS.register(new PlayerUnitPackage());
MinecraftForge.EVENT_BUS.register(new EntityUnitPackage());
MinecraftForge.EVENT_BUS.register(new DamageNumberPackage());
MinecraftForge.EVENT_BUS.register(new ParticlePackage());
MinecraftForge.EVENT_BUS.register(new WorldPackage());
MinecraftForge.EVENT_BUS.register(new PacketAnimation());

Network.registerMessage(PlayerUnitPackage.Handler.class, PlayerUnitPackage.class, 0,
        Side.CLIENT);
Network.registerMessage(EntityUnitPackage.Handler.class, EntityUnitPackage.class, 1,
        Side.CLIENT);
Network.registerMessage(DamageNumberPackage.Handler.class, DamageNumberPackage.class, 2,
        Side.CLIENT);
Network.registerMessage(ParticlePackage.Handler.class, ParticlePackage.class, 3, Side.CLIENT);
Network.registerMessage(WorldPackage.Handler.class, WorldPackage.class, 4, Side.CLIENT);
Network.registerMessage(MessagePackage.Handler.class, MessagePackage.class, 5, Side.CLIENT);

 

@Mod.EventBusSubscriber
public class OnTrackEntity {

    @SubscribeEvent
    public static void onEntityTrack(PlayerEvent.StartTracking event) {

        Entity entity = event.getTarget();

        if (entity instanceof EntityLivingBase) {
            if (entity.isEntityEqual(event.getEntityPlayer()) == false) {
                if (entity.hasCapability(EntityData.Data, null)) {

                    Main.Network.sendTo(new EntityUnitPackage((EntityLivingBase) entity),
                            (EntityPlayerMP) event.getEntityPlayer());
                }

            }
        }

    }
}

 

/**
 * @return checks if it should be synced to clients. Clients currently only see health and status
 * effects
 */
private DirtyCheck getDirtyCheck() {

    DirtyCheck check = new DirtyCheck();

    check.hp = (int) MyStats.get(Health.GUID).Value;

    return check;
}

public void RecalculateStats(EntityLivingBase entity, UnitData data, int level,
                             IWorldData world) {

    data.setEquipsChanged(false);

    if (data.getUnit() == null) {
        data.setUnit(this, entity);
    }

    DirtyCheck old = getDirtyCheck();

    Unit copy = this.Clone();

    int tier = 0;
    if (world != null) {
        tier = world.getTier();
    }

    ClearStats();

    MobRarity rar = Rarities.Mobs.get(data.getRarity());

    float hpadded = this.getHpAdded(entity, rar, data);

    MyStats.get(Health.GUID).Flat += hpadded;


    if (entity instanceof EntityPlayer) {
        List<GearItemData> gears = PlayerStatUtils.getEquipsExcludingWeapon(entity); // slow
        boolean gearIsValid = this.isGearCombinationValid(gears, entity);

        ItemStack weapon = entity.getHeldItemMainhand();
        if (weapon != null) {
            GearItemData wep = Gear.Load(weapon);
            if (wep != null && wep.GetBaseGearType().slotType().equals(GearSlotType.Weapon))
                gears.add(wep);
        }

        ItemStack offhand = entity.getHeldItemOffhand();
        if (offhand != null) {
            GearItemData off = Gear.Load(offhand);
            if (off != null && off.GetBaseGearType().slotType().equals(GearSlotType.OffHand))
                gears.add(off);
        }

        PlayerStatUtils.AddPlayerBaseStats(data, this);

        if (gearIsValid) {
            PlayerStatUtils.CountWornSets(entity, gears, this);
            PlayerStatUtils.AddAllGearStats(entity, gears, this, level); // slow, but required
            PlayerStatUtils.AddAllSetStats(entity, this, level);
        }
    } else {
        MobStatUtils.AddMobcStats(data, data.getLevel(), entity);
        MobStatUtils.AddMobTierStats(this, tier);

    }

    CommonStatUtils.AddStatusEffectStats(this, level);
    CommonStatUtils.AddMapAffixStats(this, level);
    PlayerStatUtils.CalcStatConversionsAndTransfers(copy, this);
    PlayerStatUtils.CalcTraits(data);

    CalcStats(data);

    DirtyCheck newcheck = getDirtyCheck();

    if (old.isDirty(newcheck)) {
        Main.Network.sendToAllTracking(new EntityUnitPackage(entity, data), entity);
    }

}
Link to comment
Share on other sites

Thank you for taking your time. Ok, I will try to upload a repository. RecalculateStats is called int he same class and another class. That has a method called recalculateStats, that checks if the unit is null or if there is a need to recalc the stats. That method is called in a number of places.

Link to comment
Share on other sites

14 minutes ago, diesieben07 said:

Where is RecalculateStats called from?

In general, is it possible to post a Git repository of the mod?

https://github.com/ndrwln/Mine-and-Slash-modified

Its just open source code I modified so...

I also think the baubles jar is a forked version someone changed so that it would send an event when equipment changed. So that my mod could catch it and recalculate the stats. Its in the lib folder. The original implementation of the mod would not recalc stats when a bauble equip was changed -_-.

 

The crash doesnt occur when changing equipment, though. Sometimes we can go 40 minutes without a crash. Other times its constant crashing,

Edited by 4sterism
Link to comment
Share on other sites

1 minute ago, diesieben07 said:

Which monsters? I can't even fight the slimes in superflat, their attacks are one-hit kills and things like regen don't work.

I don't know whats causing the crashes exactly. And yh, I think I need to nerf slime dmg. We dont encounter lots of slimes. Regen happens every second. Ive never seen a problem with regen.

Link to comment
Share on other sites

1 minute ago, diesieben07 said:

Sorry, but I am not playing around for hours in game trying to get this to happen... You need to spend some time and isolate it.

Ok. I will do that. On server, fighting mosnters can usually cause crashes. Testing on client doesnt cause crashes though, which is telling.

Edited by 4sterism
Link to comment
Share on other sites

6 hours ago, diesieben07 said:

This is terrible in so many ways.

 

  1. It spawns a new thread every time. Spawning threads is very expensive.
  2. It does not properly dispose the created ExecutorService. Guava does this for you in this case through the finalize method (which is also just terrible, because it makes the GC work much harder to clean up this object), but it's still bad coding style.
  3. It's accessing MInecraft code from a completely random thread. Minecraft code must (99% of the time) only be accessed from it's main thread.

By the way, where should I read up on how to improve this for future reference?

Link to comment
Share on other sites

3 minutes ago, 4sterism said:

By the way, where should I read up on how to improve this for future reference?

You can look up how threading works in Java and the common design pattern when using threading.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

Is this mod released somewhere? If so that's against my permission as i reserved all rights. I only allowed private use of modified code.

 

Also the 1.12.2 version has a crapton of my spaghetti code which is mostly ironed out in 1.14.4 as i spent months reworking most things. Yes, months to rework things, so i don't suggest you try fix.

 

Also sorry sieben for the problems.

 

 

 

Link to comment
Share on other sites

4 hours ago, robertx555 said:

Is this mod released somewhere? If so that's against my permission as i reserved all rights. I only allowed private use of modified code.

 

Also the 1.12.2 version has a crapton of my spaghetti code which is mostly ironed out in 1.14.4 as i spent months reworking most things. Yes, months to rework things, so i don't suggest you try fix.

 

Also sorry sieben for the problems.

 

 

 

Its not relased anywhere, its just for a group of small friends. I have no interest in releasing it anywhere.

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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Did you check the getRenderShape method of your block to ensure it's returning the correct enum value?
    • new to messing with modpacks. the server starts and the pack is playable on personal worlds, but every time i try to enter the server, i get "internal exception: io.netty.handler.codec.DecoderException: java.lang.IllegalArgumentException: Payload may not be larger than 1048576 bytes" and it boots me. not sure what this means. the debug log is essentially gibberish to me and i'm not sure... about anything. is it saying that it's sending me too much data? if it helps at all, my mc username is "leucanella", and the disconnect reasons are near the very bottom (at least once was due to mismatched modlists, but i got that fixed i'm pretty sure). i just can't make sense of it myself. https://gist.github.com/idlebird/c5269e80434a501104f6b99ebc16be46
    • We somehow figured out the issue: Whenever we try to eat a food item from the mod "[Let's Do] Candlelight" that can be eaten multiple times using a feeding upgrade from "Sophisticated Backpacks", that's when we crash. Food items include: - Beef Wellington - Bolognese - Chicken Alfredo - Chicken with Vegetables - Cooked Beef - Fricasse with Hash Browns - Lasagna - Lettuce with Steak - Lettuce with Tomatoes, Potatoes and Carrots - Mushroom Soup - Pasta with Bolognese - Pasta with Tomato Sauce - Pork Ribs - Roastbeef with Carrots - Salmon with White Wine Sauce - Tomato Mozzarella Salad - Tomato Soup - Tropical Fish Supreme
    • Me and my sister are playing on a modded minecraft server, but recently she has been crashing at random intervals and no one I've talked with knows why. There's no crash report on my sister's side, but in the log of the server there appears a bunch of lines every time she crashes. They appear to be mostly similar with different mods changing each crash. Minecraft Version: 1.20.1 Forge version: forge-47.2.20 Server log: [07May2024 18:13:29.067] [Server thread/ERROR] [net.minecraftforge.eventbus.EventBus/EVENTBUS]: Exception caught during firing event: null     Index: 12     Listeners:         0: NORMAL         1: ASM: com.github.alexthe666.citadel.server.CitadelEvents@28c884eb onEntityUpdateDebug(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         2: net.minecraftforge.eventbus.EventBus$$Lambda$4374/0x00007f0098c72da0@10f79ae2         3: ASM: com.github.alexthe666.alexsmobs.event.ServerEvents@6f4126f3 onLivingUpdateEvent(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         4: ASM: class tallestegg.illagersweararmor.IWASpawnEvents tickEntity(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         5: ASM: class io.github.lightman314.lightmanscurrency.common.EventHandler entityTick(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         6: ASM: com.github.L_Ender.cataclysm.event.ServerEventHandler@1bbd60d8 onLivingUpdateEvent(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         7: ASM: class io.github.edwinmindcraft.apoli.common.ApoliPowerEventHandler playerTick(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         8: ASM: class io.github.edwinmindcraft.apoli.common.ApoliEventHandler livingTick(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         9: net.minecraftforge.eventbus.EventBus$$Lambda$4374/0x00007f0098c72da0@1e30768c         10: ASM: class net.mcreator.borninchaosv.init.EntityAnimationFactory onEntityTick(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         11: ASM: squeek.appleskin.network.SyncHandler@29e380f7 onLivingTickEvent(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V         12: ASM: top.theillusivec4.curios.common.event.CuriosEventHandler@55b4416c tick(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingTickEvent;)V java.lang.ArrayIndexOutOfBoundsException [07May2024 18:13:29.146] [Server thread/WARN] [net.minecraft.server.network.ServerConnectionListener/]: Failed to handle packet for /OMITTED IP net.minecraft.ReportedException: Ticking player     at net.minecraft.server.level.ServerPlayer.m_9240_(ServerPlayer.java:530) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.server.network.ServerGamePacketListenerImpl.m_9933_(ServerGamePacketListenerImpl.java:262) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.network.Connection.m_129483_(Connection.java:263) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.server.network.ServerConnectionListener.m_9721_(ServerConnectionListener.java:142) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.server.MinecraftServer.m_5703_(MinecraftServer.java:907) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.server.dedicated.DedicatedServer.m_5703_(DedicatedServer.java:283) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.server.MinecraftServer.m_5705_(MinecraftServer.java:814) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:661) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23461!/:?]     at java.lang.Thread.run(Thread.java:833) ~[?:?] Caused by: java.lang.ArrayIndexOutOfBoundsException Mod List: SecurityCraft v1.9.9.jar additional_lights-1.20.1-2.1.7.jar advancements_tracker_1.20.1-6.1.0.jar AI-Improvements-1.20-0.5.2.jar alexsdelight-1.5.jar alexsmobs-1.22.8.jar AmbientSounds_FORGE_v5.3.9_mc1.20.1.jar amendments-1.20-1.1.26.jar appleskin-forge-mc1.20.1-2.5.1.jar Aquaculture-1.20.1-2.5.1.jar aquaculture_delight_1.0.0_forge_1.20.1.jar architectury-9.2.14-forge.jar Arda's Sculks 1.3.2 [FORGE] [1.20.1].jar artifacts-forge-9.5.3.jar async-locator-forge-1.20-1.3.0.jar athena-forge-1.20.1-3.1.2.jar AttributeFix-Forge-1.20.1-21.0.4.jar BadOptimizations-2.1.1.jar badpackets-forge-0.4.3.jar balm-forge-1.20.1-7.2.2.jar beautify-2.0.2.jar BetterAdvancements-1.20.1-0.3.2.162.jar bettercombat-forge-1.8.5+1.20.1.jar BetterF3-7.0.2-Forge-1.20.1.jar betterfarmerscombat-1.2-1.20.1.jar BetterThirdPerson-Forge-1.20-1.9.0.jar BiomesOPlenty-1.20.1-18.0.0.598.jar Bookshelf-Forge-1.20.1-20.1.10.jar born_in_chaos_[Forge]1.20.1_1.2.jar Bountiful-6.0.3+1.20.1-forge.jar caelus-forge-3.2.0+1.20.1.jar camera-forge-1.20.1-1.0.8.jar canary-mc1.20.1-0.3.3.jar chat_heads-0.10.32-forge-1.20.jar Chimes-v2.0.1-1.20.1.jar Chipped-forge-1.20.1-3.0.6.jar chunksending-1.20.1-2.8.jar Chunky-1.3.136.jar citadel-2.5.4-1.20.1.jar cloth-config-11.1.118-forge.jar Clumps-forge-1.20.1-12.0.0.3.jar cluttered-2.1-1.20.1.jar connectedglass-1.1.11-forge-mc1.20.1.jar Controlling-forge-1.20.1-12.0.2.jar corpse-forge-1.20.1-1.0.12.jar cosmeticarmorreworked-1.20.1-v1a.jar CreativeCore_FORGE_v2.11.27_mc1.20.1.jar creeperoverhaul-3.0.2-forge.jar Croptopia-1.20.1-FORGE-3.0.4.jar ctia-1.20.1-forge-2.0.9.jar cupboard-1.20.1-2.6.jar curios-forge-5.9.0+1.20.1.jar CustomPlayerModels-1.20-0.6.16c.jar darktimer-forge-1.20.1-1.0.9.jar dotbe-1.20.1-1.5.5.jar dummmmmmy-1.20-1.8.14.jar DungeonsArise-1.20.x-2.1.58-release.jar DungeonsAriseSevenSeas-1.20.x-1.0.2-forge.jar dye_depot-1.0.0-forge.jar dynamiclights-v1.7.1-mc1.17x-1.20x-mod.jar easy_mob_farm_1.20.1-7.1.0.jar elevatorid-1.20.1-lex-1.9.jar embeddium-0.3.17+mc1.20.1-all.jar embeddiumplus-1.20.1-v1.2.8.jar emotecraft-for-MC1.20.1-2.2.7-b.build.50-forge.jar EnchantmentDescriptions-Forge-1.20.1-17.0.14.jar EnderMail-1.20.1-1.2.9.jar endermanoverhaul-forge-1.20.1-1.0.4.jar endersdelight-1.20.1-1.0.3.jar entityculling-forge-1.6.2-mc1.20.1.jar EpheroLib-1.20.1-FORGE-1.2.0.jar fantasyfurniture-1.20.1-9.0.0.jar FarmersDelight-1.20.1-1.2.4.jar farmersutils-1.0.5-1.20.1.jar Fastload-Reforged-mc1.20.1-3.4.0.jar fastpaintings-1.20-1.2.5.jar ferritecore-6.0.1-forge.jar friendsandfoes-forge-mc1.20.1-2.0.10.jar ftb-essentials-forge-2001.2.2.jar ftb-library-forge-2001.2.1.jar fusion-1.1.1-forge-mc1.20.1.jar geckolib-forge-1.20.1-4.4.4.jar getittogetherdrops-forge-1.20-1.3.jar handcrafted-forge-1.20.1-3.0.6.jar IllagerInvasion-v8.0.5-1.20.1-Forge.jar illagersweararmor-1.20.1-1.3.4.jar ImmediatelyFast-Forge-1.2.13+1.20.4.jar immersive_melodies-0.1.0+1.20.1-forge.jar Incendium_1.20.4_v5.3.4.jar Item_Obliterator-FORGE-MC1.20.1-1.7.0.jar Jade-1.20.1-forge-11.8.0.jar jei-1.20.1-forge-15.3.0.4.jar journeymap-1.20.1-5.9.20-forge.jar Kambrik-6.1.1+1.20.1-forge.jar kotlinforforge-4.10.0-all.jar L_Enders_Cataclysm-1.99.2 -1.20.1.jar LeavesBeGone-v8.0.0-1.20.1-Forge.jar letmedespawn-forge-1.20.x-1.2.0.jar letsdo-addon-compat-forge-v1.4.1.jar letsdo-API-forge-1.2.9-forge.jar letsdo-bakery-forge-1.1.8.jar letsdo-beachparty-forge-1.1.4-1.jar letsdo-brewery-forge-1.1.6.jar letsdo-candlelight-forge-1.2.11.jar letsdo-herbalbrews-forge-1.0.6.jar letsdo-meadow-forge-1.3.8.jar letsdo-nethervinery-forge-1.2.10.jar letsdo-vinery-forge-1.4.15.jar lightmanscurrency-1.20.1-2.2.1.3b.jar lionfishapi-1.8.jar magicvibedecorations-HALLOWEEN 1.5.0 1.20.1 forge.jar make_bubbles_pop-0.2.0-forge-mc1.19.4+.jar memoryleakfix-forge-1.17+-1.1.5.jar MobLassos-v8.0.1-1.20.1-Forge.jar modelfix-1.15.jar moonlight-1.20-2.11.14-forge.jar morediscs-1.20.1-33-forge.jar MouseTweaks-forge-mc1.20-2.25.jar Necronomicon-Forge-1.4.2.jar nether-s-exoticism-1.20.1-1.2.7.jar nethersdelight-1.20.1-4.0.jar nomowanderer-1.20.1_1.6.4.jar oculus-mc1.20.1-1.7.0.jar origins-forge-1.20.1-1.10.0.7-all.jar origins-plus-plus-2.2-forge.jar Paraglider-forge-20.1.3.jar Patchouli-1.20.1-84-FORGE.jar Paxi-1.20-Forge-4.0.jar Pehkui-3.8.0+1.20.1-forge.jar player-animation-lib-forge-1.0.2-rc1+1.20.jar PlayerRevive_FORGE_v2.0.24_mc1.20.1.jar plushies-1.4.0-forge.jar polymorph-forge-0.49.3+1.20.1.jar projectvibrantjourneys-1.20.1-6.0.0.jar PuzzlesLib-v8.1.18-1.20.1-Forge.jar resourcefulconfig-forge-1.20.1-2.1.2.jar resourcefullib-forge-1.20.1-2.1.24.jar right-click-harvest-3.2.3+1.20.1-forge.jar rubidium-extra-0.5.4.3+mc1.20.1-build.121.jar Runelic-Forge-1.20.1-18.0.2.jar saturn-mc1.20.1-0.1.3.jar sawmill-1.20-1.3.13.jar scholar-1.20.1-1.0.0-forge.jar screenshot_viewer-1.2.1-forge-mc1.20.1.jar Searchables-forge-1.20.1-1.0.2.jar selfexpression-2.8 1.20.1.jar servercore-forge-1.5.1+1.20.1.jar ShulkerArmory_1.20.1_1.2.1_hotfix.jar simplehats-forge-1.20.1-0.2.4.jar simplevoicechat_broadcast-mc1.20.1-1.0.1.jar simplyswords-forge-1.55.0-1.20.1.jar smoothboot(reloaded)-mc1.20.1-0.0.4.jar Sniffer+-forge-1.20.1-0.3.0.jar sophisticatedbackpacks-1.20.1-3.20.5.1044.jar sophisticatedcore-1.20.1-0.6.21.609.jar sophisticatedstorage-1.20.1-0.10.21.793.jar spark-1.10.53-forge.jar stalwart-dungeons-1.20.1-1.2.8.jar starlight-1.1.2+forge.1cda73c.jar step-1.20.1-1.2.2.jar supermartijn642corelib-1.1.17-forge-mc1.20.1.jar supplementaries-1.20-2.8.10.jar temporalapi-1.5.0.jar TerraBlender-forge-1.20.1-3.0.1.4.jar Terralith_1.20.4_v2.4.11.jar toms_storage-1.20-1.6.6.jar torchmaster-20.1.6.jar trashslot-forge-1.20-15.1.0.jar treasuredistance-1.20-1.2.jar tru.e-ending-v1.1.0c.jar v_slab_compat-1.20-2.3.jar vintagedelight-0.0.12.jar vmp-fabric-mc1.20.1-0.2.0+beta.7.101-all.jar voicechat-forge-1.20.1-2.5.11.jar waystones-forge-1.20-14.1.3.jar WI-Zoom-1.5-MC1.20.1-Forge.jar worldedit-mod-7.2.15.jar wsopulence1.2.0_Forge_MC1.20.1-1.20.4.jar xlpackets-1.18.2-2.1.jar YungsApi-1.20-Forge-4.0.4.jar YungsBetterEndIsland-1.20-Forge-2.0.6.jar YungsBetterNetherFortresses-1.20-Forge-2.0.6.jar YungsBetterOceanMonuments-1.20-Forge-3.0.4.jar YungsBetterStrongholds-1.20-Forge-4.0.3.jar
    • Like the title i wanted to render a obj model into minecraft but i cant find any tutorials for this.
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.