Jump to content

[Solved] Working with NEI in dev workspace MC1.6


MineMaarten

Recommended Posts

Hey,

 

I want to create a NEI plugin for one of my mods, and therefore I need NEI to be installed in my workspace obviously. And that's with what I've problems with. ChickenBones himself gave the following brief description:

Developing with my mods is now even easier. Simply download the dev package, put it in /jars/mods and link it in eclipse or whatever IDE you use. For recompilation, just put all the dev versions in /mcp/lib as well.

I downloaded the dev zips from his BitBucket, and put them in /jars/mods. What does he mean with "link it in Eclipse"? If he means 'project->Build Path->link source...', what I thought he meant, I linked the source (a copy of it, located not in the /jars/mods folder) without being in the .zip. This doesn't work too well. I've also tried just adding in a new project with it being CodeChickenCore and NEI, but this gives some import errors like (when I only add CodeChickenCore) :

In class ClassDiscover:

import org.objectweb.asm.tree.ClassNode;
import codechicken.lib.asm.ASMHelper;

Does CCC need some special libraries? And why is the lib package of CCC missing?

 

When I search for these problems, I only get methods for versions before MC1.6, which is handled differently as far as I can tell from ChickenBones saying "Developing with my mods is now even easier".

 

One solution could be just putting the source to run in the MCP/jars/mods folder and keep the source not being used to develop with. However when I put mods in the MCP/jars/mods folder these don't get picked up by Forge somehow..

 

I love Eclipse, but as you can tell from this probably I'm not an Eclipse expert :(.

 

Many thanks in advance, I hope I'll be pushed in the right direction.

 

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Link to comment
Share on other sites

Right, you need the normal version of the mod and the api/ dev for it. Put the normal version in jars/mods and open the api/ dev in a zip opener (7zip/ winrar) and then go into src/minecraft and inside that drag the api/ dev folder into the minecraft folder so it would be src/minecraft/chickenbones or whatever the api is named. Then, go into eclipse and it should be in there under src :)

Link to comment
Share on other sites

Hey,

 

Thanks for your reply, putting the normal versions of the mods in the mcp/jars/mods folder definately helped: I now have NEI running in my dev environment. Whilst downloading the normal versions of the mod I realised that was the place where also the dev versions could be downloaded (which is probably prefered above downloading them from BitBucket). So I did that, and pasted both the dev versions of the mods (CodeChickenCore & NEI) in the mcp/src/minecraft folder. The result in Eclipse is unfortunately the following:

neipluginProblem.png

And this is where one of the errors is located:

neipluginProblem2.png

All the errors are caused by the missing codechicken/lib package, which isn't included in the dev package.... Which strangely enough, also doesn't exist in the normal versions of CodeChickenCore ?? (I checked with winRar).

 

Only putting the API files in my Eclipse isn't an option I think, as there are errors due to the missing codechicken/lib in the API folder as well...

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Link to comment
Share on other sites

Oh wow, how strange: It appears that the codechicken/lib version gets generated when Minecraft runs, and is placed in mcp/jars/mods/1.6.2. Anyway, I've put in this generated folder (dev version, that also gets generated) in my workspace and it works brilliantly now!

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

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

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

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