Jump to content

Intellij Idea 15 bug with Minecraft Forge?


Recommended Posts

Hi guys,


Ok, so I think I've found a bug in Intellij Idea 15, but it could be a thing in all variations of idea... Anyway, if I overwrite the stock "Example Mod" directory that MF provides and run the client, it picks both my java code up AND my assets folder up. Both of which are marked as Sources and Resource root.


However, if I add another directory say "MiniCrafft" and also mark my "java" and "resources" sub-directories as "Sources" and "Resource" root.


I then create just a simple main java class and a simple mcmod.info file then re-launch the client... I get the following:


In my "Mods" option on the title screen, it DOES show "MiniCraft" as an entry BUT it does NOT show my mcmod.info information, it however shows the "please contact mod author for the mcmod file" thing.


Does anyone else get that? Or is it literally just me?

Link to comment
Share on other sites

You shouldn't need to manually mark directories as Source/Resource Roots. The IDEA project should be created in the same directory as build.gradle, your code should go in src/main/java and src/main/resources, which will be automatically marked as roots.


This tutorial explains how to correctly set up your project.


If you're using Forge for 1.7.10 or earlier, add this to your build.gradle:

// Fix resources not being loaded in IDEA
// http://www.minecraftforge.net/forum/index.php/topic,32467.msg169687.html#msg169687
idea.module.inheritOutputDirs = true

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

If that's the case then why can I go into Eclipse and add as many different mod directories (not that I actually would but I can) call them any number of things and they will all run no matter what WITH their resources?


Doing it just like doesn't seem very flexible!


Also, if I clone a repository on my GIthub, it automatically names the root directory by the name of the repository on my profile and changing that is difficult.

Link to comment
Share on other sites

I usually just use one IDEA project per Gradle project (i.e. mod), but it seems you can attach another Gradle project as a module of the current IDEA project from IDEA's Gradle window. This is similar to using an Eclipse workspace with multiple projects (mods).

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

How would one do that, do you know?


Click the + button (Attach Gradle Project) in IDEA's Gradle window and browse to the other build.gradle file.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

What could I set as the gradle home?


If you have Gradle installed locally, use its installation directory as the Gradle Home. You can also just tell IDEA to use the default Gradle wrapper instead of installing Gradle locally.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

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.

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.


  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Your project sounds fascinating and quite ambitious! It's great to see someone so passionate about enhancing the Minecraft experience. I'm sure you'll find plenty of talented modders here who share your enthusiasm. A few thousand dollars is a generous budget and should attract experienced developers. Here’s how you can approach this: Define Your Core Features: Prioritize the most important features you want in your mod. It sounds like you want to add: A new biome for the Overworld A new biome for the End New commands New mobs and items Break Down the Project: Given the scale, breaking the project into smaller, manageable pieces is smart. This approach ensures that progress is made consistently, and it allows for periodic reviews and payments. It also helps in adapting the project based on any unforeseen challenges or new ideas that come up. Share Your Concept Art: Your amateur concept art will be very helpful for modders to understand your vision. It’s also a great starting point for collaboration, as it allows others to bring their own creative ideas to the table. Find Passionate Modders: Since you prefer working with people passionate about Minecraft, this forum is a good choice. You might want to specify any particular skills or experience levels you're looking for in a modder. Additionally, sharing your timeline and expectations upfront can help in setting the right pace for the project.
    • You have to set the java path in your start script
    • i tried that and i got rid of java to install the new one but it still says i have the old one and i cant get the new one because of the old one  
    • Я создал босса для Майнкрафт и когда он вызывается «Произошла непредвиденная ошибка при попытке выполнить эту команду» и в описании «Не удается вызвать ошибку "net.minecraft.world.entity.ai.attributes.attribute instance.m_22100_ (double)", потому что возвращаемое значение "net.minecraft.world.entity.monster.zombie.m_21051_ (net.minecraft.world.entity.ai.attributes.attribute)" имеет значение null. Я не до конца понимаю, в чем ошибка. Но, похоже, это связано с атрибутами. Помогите пожалуйста разобраться   Вот сам класс босса: package org.mymod.afraid; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.goal.*; import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.phys.Vec3; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.entity.projectile.SmallFireball; import org.jetbrains.annotations.NotNull; public class AfraidBoss extends Zombie { private static final int MAX_HEALTH = 1000; private static final double ATTACK_DAMAGE = 10.0D; private static final double FOLLOW_RANGE = 50.0D; private static final double ATTACK_KNOCKBACK = 1.0D; private static final double MOVEMENT_SPEED = 0.25D; private static final int TELEPORT_RADIUS = 20; private static final int FIREBALL_COOLDOWN = 100; // 5 seconds (20 ticks per second) private static final int FIREBALL_COUNT = 3; private int fireballCooldown = 0; private int fireDashCooldown = 0; public AfraidBoss(EntityType<? extends Zombie> type, Level level) { super(type, level); this.setHealth(MAX_HEALTH); this.setItemSlot(EquipmentSlot.MAINHAND, new ItemStack(Items.DIAMOND_SWORD)); this.setItemSlot(EquipmentSlot.OFFHAND, new ItemStack(Items.DIAMOND_SWORD)); } @Override protected void registerGoals() { this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 1.0, (float) TELEPORT_RADIUS)); this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(4, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(5, new HurtByTargetGoal(this)); this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); } @Override public void aiStep() { super.aiStep(); if (this.getTarget() instanceof Player) { Player player = (Player) this.getTarget(); double distanceToPlayer = this.distanceToSqr(player); // Fire Dash ability if (distanceToPlayer <= TELEPORT_RADIUS * TELEPORT_RADIUS && fireDashCooldown == 0) { this.fireDash(player); fireDashCooldown = 200; // Cooldown for fire dash (10 seconds) } // Fireball attack if (fireballCooldown == 0) { this.shootFireballs(player); fireballCooldown = FIREBALL_COOLDOWN; // Cooldown for fireball attack (5 seconds) } // Decrement cooldowns if (fireDashCooldown > 0) { fireDashCooldown--; } if (fireballCooldown > 0) { fireballCooldown--; } } } private void fireDash(Player player) { Vec3 direction = player.position().subtract(this.position()).normalize(); Vec3 newPos = this.position().add(direction.scale(10)); this.teleportTo(newPos.x, newPos.y, newPos.z); this.createFireTrail(newPos); player.hurt(DamageSource.mobAttack(this), 20.0F); // Damage the player } private void createFireTrail(Vec3 position) { for (int x = -2; x <= 2; x++) { for (int z = -2; z <= 2; z++) { BlockPos firePos = new BlockPos(position.x + x, position.y, position.z + z); this.level.setBlock(firePos, Blocks.FIRE.defaultBlockState(), 11); } } } private void shootFireballs(Player player) { Vec3 direction = player.position().subtract(this.position()).normalize(); for (int i = 0; i < FIREBALL_COUNT; i++) { SmallFireball fireball = new SmallFireball(this.level, this, direction.x, direction.y, direction.z); fireball.setPos(this.getX() + direction.x, this.getY() + direction.y, this.getZ() + direction.z); this.level.addFreshEntity(fireball); } } public static AttributeSupplier.Builder createAttributes() { return Zombie.createMobAttributes() .add(Attributes.MAX_HEALTH, MAX_HEALTH) .add(Attributes.ATTACK_DAMAGE, ATTACK_DAMAGE) .add(Attributes.FOLLOW_RANGE, FOLLOW_RANGE) .add(Attributes.ATTACK_KNOCKBACK, ATTACK_KNOCKBACK) .add(Attributes.MOVEMENT_SPEED, MOVEMENT_SPEED); } @Override public boolean hurt(@NotNull DamageSource source, float amount) { boolean flag = super.hurt(source, amount); if (flag && source.getEntity() instanceof Player) { Player player = (Player) source.getEntity(); if (this.random.nextInt(10) == 0) { this.teleportAndAttack(player); } } return flag; } private void teleportAndAttack(Player player) { Vec3 randomPos = player.position().add((this.random.nextDouble() - 0.5) * 4, 0, (this.random.nextDouble() - 0.5) * 4); if (this.randomTeleport(randomPos.x, randomPos.y, randomPos.z, true)) { player.hurt(DamageSource.mobAttack(this), 10.0F); // Damage the player } } }  
  • Topics

  • Create New...

Important Information

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