Jump to content

[1.8] My First Modding Experience


statphantom

Recommended Posts

Hello, amateur coder, complete novice minecrafter here. I am doing some home projects to understand all the events, how they interact etc etc.

 

 

I decided to change the Topic / Title of this thread since it has kind of become my HUB for help / progression on my Mod(s). I will post any ideas / problems / progressions I have and people can help me out develop my mod, I am using 1.8 as a pure learning curve, get something done that is playable to me and then come 1.9 I will adapt everything into 1.9 and then release it to the public :)

 

My Idea is create a 'leveling from scratch mod' where you start from nothing but everything is harder to get and realistic (well as realistic as it can be), and also have to level up a various number of skills. e.g. you wake up, you gain the perception skill. you take your first step you gain the strength and agility skills ETC. Please post ANYTHING you like here, any ideas, any problems you can foresee, or any advice / help :)

 

Remember I am very new to minecraft modding so this will take a while and I will need a lot of help also, Thanks!

 

~ Statphantom

 

NEW VIDEO: 18/10/15

 

To Do:

Add some fibrous plans (Jute Cotton etc.) to world gen.

Get some good textures

Add panning for metals

Add camp fires

Add bark building blocks for homes

Create skills / levels GUI

 

Done:

Added string / rope from tensile weeds

tall grass drops tensile weeds on occation

Saved skills variables through death

Created 3 skills for testing

Crafting table

New wood axe mechanics

Add bark from trees

Sticks can only be gathered from grass that has leaves above it

Language file

Learned texture placement

Remove tree punching

Add sticks from grass

Link to comment
Share on other sites

  • Replies 66
  • Created
  • Last Reply

Top Posters In This Topic

PlayerInteractEvent is for interaction, it would be useful if you would need to perform one-time task when clicking on block.

 

In this case - mining in MC is a continuous task. It is being called every tick when you are mining. Also - breakSpeed is player-related (calculated during task) so using this event you could make one player not be able to mine wool, and ther would do that easily.

 

Oh and if you don't know: -1.0F comes from Block#setIndestructible (or something like that), lookup bedrock.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Thanks! the API changes a lot so I find a lot of outdated information, I do know coding (C and C++ mostly) and am very interested in coding / gaming so learning minecraft is a perfect middle ground, At RMIT university to learn code. But anywho I won't go to the extreme of bothering you via skype calls and I just need pushes in the right direction, I have this so far...

 

@SubscribeEvent
public void onPlayerClickEvent(PlayerInteractEvent event) {
if (event.action == Action.RIGHT_CLICK_BLOCK) {

	if (event.entityPlayer.getCurrentEquippedItem() == null) {

		if (event.world.getBlockState(event.pos).getBlock() == Block.getBlockById(2)) {


		}
	}
}
}

 

seems to be happy, now lets learn about item and block replacements :P

 

Thanks a lot for your help, it is not going unnoticed :)

Link to comment
Share on other sites

All code that SETs data should be ran on server side:

http://www.minecraftforge.net/forum/index.php/topic,33918.msg178740.html#msg178740

 

Apply this to your code (!world.isRemote) - this is one of most important things about MC code design.

 

Block.getBlockById(2)

 

As of 1.7+ - NEVER refere to blocks on per-ID besis.

IDs are being assigned on WORLD creation, not on game startup. Each world has its own dictionary, in one world 500 can be something and in other  - something else.

You should never, ever, in any case, use Item/Block IDs, always instances (e.g.: Blocks.apple).

 

Note that while vanilla IDs are actually static - so no harm here, it's still bad practice (and slower).

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Thanks, I got confused between the Block and Blocks classes so have fixed this (if (event.world.getBlockState(event.pos).getBlock() == Blocks.grass)) :P

 

also how do I make the code server side only? do I create a new method called 'swapGrassForDirt'? or can I add @sideonly(side.SERVER) just before the manipulation.

 

	@SubscribeEvent
        @SideOnly(side.SERVER) <------- here?
public void onPlayerMineEvent(PlayerEvent.BreakSpeed event) {

	if (event.state.getBlock() == Blocks.log) {

                        @SideOnly(side.SERVER) <------- or here?
		event.newSpeed = -1;

	} else {

	}
}

 

 

also, sadly the ONE thing I never learnt in java was thread handling so while I can read and understand that link, don't entirely know how to implement them :P

on a VERY related topic, where would I add the !world.isRemote check?

Link to comment
Share on other sites

Yes, most of events are called on both logical sides, isRemote decides which logical side can pass the test. All of data manipulation should happen on server.

 

true = client

false = server

 

I am pretty sure I gave good explanation in link provided. (Might take some questions to get it tho :P)

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Got it working :) right-clicking on grass with an empty hand replaces it with dirt :) please let me know if something is wrong either way.

 

 

 

@SubscribeEvent
public void onPlayerClickEvent(PlayerInteractEvent event) {
if (event.action == Action.RIGHT_CLICK_BLOCK) {

	if (event.entityPlayer.getCurrentEquippedItem() == null) {

		if (event.world.getBlockState(event.pos).getBlock() == Blocks.grass) {

			if (!event.world.isRemote) {
				event.world.setBlockState(event.pos, Blocks.dirt.getDefaultState());
			}
		}
	}
}
}

 

now I will focus on item drops, and so only facing the top of the grass blocks works :)

Link to comment
Share on other sites

Yes, most of events are called on both logical sides, isRemote decides which logical side can pass the test. All of data manipulation should happen on server.

 

true = client

false = server

 

I am pretty sure I gave good explanation in link provided. (Might take some questions to get it tho :P)

 

Yep that worked perfectly, i got a bit confused with the @SideOnly annotation, I think I am understanding it correctly that it basically does the same thing as the isRemote check however it is for a full method, so you don't need both of them.

Link to comment
Share on other sites

Not quite. 'isRemote' is logical check, @SideOnly is, let's call it "code-check".

 

Anything annotated with @SideOnly will ONLY exist on provided .jar.

 

Minecraft.class is @SideOnly(Side.CLIENT) - that means that Forge will NOT LOAD whole Minecraft.class into Java VM if it somehow appear in Dedicated.jar file (known as minecraft_server.jar).

 

Same goes other way around. If you run a Client.jar - anything marked with Side.SERVER will NOT be present in your environment.

 

Generally - don't use it... like at all (almost no point).

 

Example of when there is a point in doing it: Say you want server to use external SQL database. Why would client do it? In this case you could proxify access - make client use @SideOnly(Side.CLIENT) method that would return data from e.g local .json and server use Side.SERVER methods/classes that would setup SQL database interaction (for dedicated server only). Whole @SideOnly is not needed, but will save you some pointless class-loading.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Since you mentioned:

 

Main data types in minecraft are:

 

Singletons:

Item - description of what you hold in hand, Items DON'T hold data, they just "act" on data provided.

Block - similar to Items - those just act on data based on their instance, BlockState and TileEntity.

 

"Per-instance":

ItemStack - object that is actually being in your hand. ItemStack hold info about what Item it is, along with internal NBT data. internal NBT data consists of stackSize, metadata and CustomNBTData. CustomNBTData is something you can put your stuff into.

BlockState - 4 bits of data assigned to position in world. BlockState, often called metadata, can be used to e.g add facing sides to block (like furnace).

TileEntity - non-mobile object in world. TileEntity can exist in some BlockPos - you could call it "a layer over position". E.g when you place block you can also make it place TileEntity in its position. TileEntity can hold any data you want.

Entity - quite like TileEntity but moving-living.

 

Basically, that's all you need to know. Then there are more events, more packets and extended data (WorldSaveData, IExtendedEntityProperties).

 

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

I can force an item to spawn at my feet, however how do I spawn this item at the event.world.loc? also this only worlds for vanilla items, how do I spawn in a custom made item? lets call it 'sharpStick'

 

current code is:

 

	@SubscribeEvent
public void onPlayerClickEvent(PlayerInteractEvent event) {
	if (event.action == Action.RIGHT_CLICK_BLOCK) {

		if (event.entityPlayer.getCurrentEquippedItem() == null) {

			if (event.world.getBlockState(event.pos).getBlock() == Blocks.grass && event.face == event.face.UP) {

				if (!event.world.isRemote) {
					event.world.setBlockState(event.pos, Blocks.dirt.getDefaultState());

					event.entity.dropItem(Items.stick, 1);
				}						
			}
		}
	}
}

 

I would like to replace event.entity.dropItem(Items.stick, 1); with a line that can drop my custom item on top of the block I right clicked on.

 

my Item class just incase you want to see it.

 

public class SharpStick extends Item {

private final String name = "sharpStick";

public SharpStick() {

	GameRegistry.registerItem(this, name);
	setCreativeTab(CreativeTabs.tabMisc);
	setUnlocalizedName(name);
}

public String getName() {
	return name;
}
}

 

Link to comment
Share on other sites

Thanks! the API changes a lot so I find a lot of outdated information, I do know coding (C and C++ mostly) and am very interested in coding / gaming so learning minecraft is a perfect middle ground, At RMIT university to learn code.

 

That's great!  I also knew mostly c and c++ before going into this.

 

One thing to note is that some actions that you want to happen would probably be better inside the blocks themselves.

 

Example from within a block that can be created

public class testBlock extends Block{

private IBlockState state;

public testBlock(Material material, IBlockState state){
super(material);
this.state = state; //This could be the block you want it to be changed to when it is right Clicked
}

//When the block is right clicked, basically.
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ){

//This will be called when the block is right clicked.  So it's changed to the state you passed in the constructor.
//Also, only make changes with blocks on the server.  To check, do this.
if(!worldIn.isRemote){
worldIn.setBlockState(pos, this.state);

//You could also have the player drop items from here, but I'll let you figure that out (You already did in the event handler!)

}

 

I have not tested the above code, but I am pretty sure it would work!

 

I know you're messing around with events for the most part, but I thought that this would help you some how.

 

Events are definitely good when working with vanilla blocks, but if you do end up creating new items, know that this is an option!:)

 

Either way, good luck with everything!  I hope this helps you.

Link to comment
Share on other sites

This works fine for any Items. Your Items are not any different than vanilla Items.

So, you want to spawn an Item when a Block is right-clicked?

You can simulate a Block drop easily using Block.spawnAsEntity(world, pos, itemStack).

 

What do I use to get the itemStack of a custom item? Items class only contains vanilla items, do I need to do a search for name?

Link to comment
Share on other sites

Thanks! the API changes a lot so I find a lot of outdated information, I do know coding (C and C++ mostly) and am very interested in coding / gaming so learning minecraft is a perfect middle ground, At RMIT university to learn code.

 

That's great!  I also knew mostly c and c++ before going into this.

 

One thing to note is that some actions that you want to happen would probably be better inside the blocks themselves.

 

Example from within a block that can be created

public class testBlock extends Block{

private IBlockState state;

public testBlock(Material material, IBlockState state){
super(material);
this.state = state; //This could be the block you want it to be changed to when it is right Clicked
}

//When the block is right clicked, basically.
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ){

//This will be called when the block is right clicked.  So it's changed to the state you passed in the constructor.
//Also, only make changes with blocks on the server.  To check, do this.
if(!worldIn.isRemote){
worldIn.setBlockState(pos, this.state);

//You could also have the player drop items from here, but I'll let you figure that out (You already did in the event handler!)

}

 

I have not tested the above code, but I am pretty sure it would work!

 

I know you're messing around with events for the most part, but I thought that this would help you some how.

 

Events are definitely good when working with vanilla blocks, but if you do end up creating new items, know that this is an option!:)

 

Either way, good luck with everything!  I hope this helps you.

 

Thanks! any information is helpful since I'm starting out, I am messing with vanilla blocks right now but when I do custom blocks I will DEFINITELY come back here and re-read this :)

Link to comment
Share on other sites

Finally got it working! the problem was is anouther coder told me to add the registry add inside of the constructor for my item so when I created a new item it was registering the item twice.... or am I supposed to do this in a way that I dont create a new SharkStick() object? I will post all 3 of my classes so anyone can tell me if anything is wrong, thanks :)

 

Main Mod Class

 

package tutorial.generic;

import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;

@Mod(modid = Level.MODID, name = Level.MODNAME, version = Level.VERSION)
public class Level {
    public static final String MODID = "StatsLevelMod";
    public static final String MODNAME = "Level";
    public static final String VERSION = "1.0.1";
    
    public static Item sharpstick;
    
    
    @EventHandler
    public void preInit (FMLPreInitializationEvent event) {
    	
    	System.out.println("Loading " + MODNAME + "!");
    	System.out.println("Version " + VERSION + "!");
    	
    	sharpstick = new SharpStick();
    	GameRegistry.registerItem(sharpstick, ((SharpStick) sharpstick).getName());
    	
    	MinecraftForge.EVENT_BUS.register(new LevelEventHandler());
    	
    	GameRegistry.addRecipe(new ItemStack(sharpstick),
    	"A ",
    	" A",
    	'A', Items.stick);
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event) {
    	
    	
    }
    
    @EventHandler
    public void postInt (FMLPostInitializationEvent event) {
    	
    	System.out.println(MODID + " loaded successfuly!");
    }
}

 

 

Event Handler Class

 

package tutorial.generic;

import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

public class LevelEventHandler {

@SubscribeEvent
public void onPlayerMineEvent(PlayerEvent.BreakSpeed event) {

	if (event.state.getBlock() == Blocks.log) {

		event.newSpeed = -1;

	} else {

		event.newSpeed = -1;
	}
}

@SubscribeEvent
public void onPlayerClickEvent(PlayerInteractEvent event) {
	if (event.action == Action.RIGHT_CLICK_BLOCK) {

		if (event.entityPlayer.getCurrentEquippedItem() == null) {

			if (event.world.getBlockState(event.pos).getBlock() == Blocks.grass && event.face == event.face.UP) {

				if (!event.world.isRemote) {
					event.world.setBlockState(event.pos, Blocks.dirt.getDefaultState());

					Item drop = new SharpStick();

					Block.spawnAsEntity(event.world, event.pos, new ItemStack(drop));
				}						
			}
		}
	}
}
}

 

 

My Item Class

 

package tutorial.generic;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class SharpStick extends Item {

private final String name = "sharpStick";

public SharpStick() {

	setCreativeTab(CreativeTabs.tabMisc);
	setUnlocalizedName(name);
}

public String getName() {
	return name;
}
}

 

 

Thanks again for all your help guys!

 

 

PS: also need to make the item stackable :)

Link to comment
Share on other sites

From within the constructor inside your item class, type "this." And it should give you a list of things that you can mess around with.  I believe stack size is in there.

 

Another thing that you can do, at least if you're in eclipse, is hold control and click on the class you are extending, or any class for that matter, and it will open and you can see many of the methods they use and override them in your own class.

Link to comment
Share on other sites

I still can't figure out this item spawning thing. I have added maxStackSize(64). however it still wont stack, maybe it's because I am creating a new ItemStack() and a new Item(). however I can get it to work without recalling the constructors, any help on what I am doing wrong? my code is on my previous post, thanks.

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.