Jump to content

BenjiBrat

Members
  • Posts

    20
  • Joined

  • Last visited

BenjiBrat's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. I have uploaded it here: https://github.com/BenjiBrat/MinecraftPlusMod And here is my build.gradle: buildscript { repositories { jcenter() maven { url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. version = "1.0" group = "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "modid" sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. compileJava { sourceCompatibility = targetCompatibility = '1.8' } minecraft { version = "1.12.2-14.23.3.2655" runDir = "run" // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. // Use non-default mappings at your own risk. they may not always work. // simply re-run your setup task after changing the mappings to update your workspace. mappings = "snapshot_20171003" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } dependencies { // you may put jars on which you depend on in ./libs // or you may define them like so.. //compile "some.group:artifact:version:classifier" //compile "some.group:artifact:version" // real examples //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, // except that these dependencies get remapped to your current MCP mappings //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // for more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' // replace version and mcversion expand 'version':project.version, 'mcversion':project.minecraft.version } // copy everything else except the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } }
  2. I have multiple breakpoints on multiple lines. It's not stopping at any of them.
  3. Ok, I have no idea what is wrong then. Here is what happened: I set a breakpoint at the if statement. I ran debugger on my client world. I looked into the breakpoint and the variables and saw itemstack was returning tile.air. I stopped the debugger. I change the if statement to call (player.inventory.armorInventory.contains(itemstack)). I tried running the debugger again. It wouldn't stop at the set breakpoint. And now I don't even know what's wrong, because it isn't even calling my onAttackEntityAsMob() function anymore!
  4. ok thank you for that. I set a breakpoint, and after looking at the code, changed the if statement to: if(player.inventory.armorInventory.contains(itemstack) && randomSlotInt == 0) but now if I try and run debug mode again, it won't stop at the breakpoint, where as it did the first time. Please help, I have no idea why it's not stopping at the new breakpoint.
  5. I'm sorry, but what does that mean? I am a little new to java/eclipse.
  6. If you read above, I already tried that. It doesn't work, at least not when I do: if (!itemstack.isEmpty()) It never gets called.
  7. Ok, here's my full Entity code: package com.benjibrat.minecraftplusmod.entity; import java.util.Random; import javax.annotation.Nullable; import com.google.common.base.Function; import com.google.common.base.Predicate; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackMelee; import net.minecraft.entity.ai.EntityAIAvoidEntity; import net.minecraft.entity.ai.EntityAIFollow; import net.minecraft.entity.ai.EntityAIHurtByTarget; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAIWanderAvoidWater; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.monster.EntityVindicator; //import net.minecraft.entity.monster.EntityEnderman.AIFindPlayer; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.MobEffects; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.pathfinding.PathNodeType; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.math.Vec3d; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; public class EntityWatcher extends EntityMob{ public EntityWatcher(World worldIn) { super(worldIn); this.setSize(0.6f, 1.9f); this.setPathPriority(PathNodeType.WATER, -1.0F); // TODO Auto-generated constructor stub } @Override protected void initEntityAI() { this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true, new Class[] {EntityWatcher.class})); this.tasks.addTask(2, new EntityAIAttackMelee(this, 1.0D, false)); this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityPlayer.class, false)); this.tasks.addTask(7, new EntityAIWanderAvoidWater(this, 1.0D, 0.0F)); this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(8, new EntityAILookIdle(this)); //this.tasks.addTask(9, new EntityAIAvoidEntity(this, EntityPlayer.class, 10.0f, 0.8D, 0.8D)); //this.tasks.addTask(9, new EntityAIFollow(this, interpTargetPitch, maximumHomeDistance, maximumHomeDistance)); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.31); this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.5D); this.getEntityAttribute(SharedMonsterAttributes.FOLLOW_RANGE).setBaseValue(64.0D); } protected void applyEntityAI() { } public float getEyeHeight() { return 1.55F; } public void onLivingUpdate() { if (this.world.isRemote) { for (int i = 0; i < 2; ++i) { this.world.spawnParticle(EnumParticleTypes.PORTAL, this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, this.posY + this.rand.nextDouble() * (double)this.height - 0.25D, this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, (this.rand.nextDouble() - 0.5D) * 2.0D, -this.rand.nextDouble(), (this.rand.nextDouble() - 0.5D) * 2.0D); } } this.isJumping = false; super.onLivingUpdate(); } public boolean attackEntityAsMob(Entity player) { if(!this.world.isRemote) { System.out.print("ATTACK BOOL"); if (super.attackEntityAsMob(player)) { System.out.println("SUPER.ATTACK"); if (player instanceof EntityLivingBase) { System.out.println("INSTANCEOF"); int i = 1; if (this.world.getDifficulty() == EnumDifficulty.EASY) { i = 3; } if (this.world.getDifficulty() == EnumDifficulty.NORMAL) { i = 4; } else if (this.world.getDifficulty() == EnumDifficulty.HARD) { i = 5; } if (i > 0) { Random slotRandom = new Random(); int slotHigh = 3; int slotLow = 0; int randomSlotInt = slotRandom.nextInt(slotHigh) + slotLow; Random chanceRandom = new Random(); int chanceHigh = 5; int chanceLow = 1; int randomInt = chanceRandom.nextInt(chanceHigh) + chanceLow; /*Random r = new Random(); int i1 = r.nextInt(4 - 0) + 0; int i2 = r.nextInt(101 - 1) + 1;*/ ItemStack itemstack = this.getItemStackFromSlot(EntityEquipmentSlot.HEAD); System.out.println("int i > 0"); System.out.println(itemstack); if (randomInt == 1) { if (itemstack != null && randomSlotInt == 0 /*&& i2 < 20*/) { System.out.println("HEAD IS COVERED"); player.setItemStackToSlot(EntityEquipmentSlot.HEAD, ItemStack.EMPTY); EntityItem entityitem = new EntityItem(player.world, player.posX, player.posY+1, player.posZ, itemstack); entityitem.setPickupDelay(i); this.world.spawnEntity(new EntityItem(player.world, player.posX, player.posY + (double)player.height, player.posZ, itemstack)); } ItemStack itemstack2 = this.getItemStackFromSlot(EntityEquipmentSlot.CHEST); if (itemstack2 != null && randomSlotInt == 1/*&& i2 < 20*/) { player.setItemStackToSlot(EntityEquipmentSlot.CHEST, ItemStack.EMPTY); EntityItem entityitem = new EntityItem(player.world, player.posX, player.posY+1, player.posZ, itemstack2); entityitem.setPickupDelay(i); this.world.spawnEntity(new EntityItem(player.world, player.posX, player.posY + (double)player.height, player.posZ, itemstack2)); } ItemStack itemstack3 = this.getItemStackFromSlot(EntityEquipmentSlot.LEGS); if (itemstack3 != null && randomSlotInt == 2/*&& i2 < 20*/) { player.setItemStackToSlot(EntityEquipmentSlot.LEGS, ItemStack.EMPTY); EntityItem entityitem = new EntityItem(player.world, player.posX, player.posY+1, player.posZ, itemstack3); entityitem.setPickupDelay(i); this.world.spawnEntity(new EntityItem(player.world, player.posX, player.posY + (double)player.height, player.posZ, itemstack3)); } ItemStack itemstack4 = this.getItemStackFromSlot(EntityEquipmentSlot.FEET); if (itemstack4 != null && randomSlotInt == 3/*&& i2 < 20*/) { player.setItemStackToSlot(EntityEquipmentSlot.FEET, ItemStack.EMPTY); EntityItem entityitem = new EntityItem(player.world, player.posX, player.posY+1, player.posZ, itemstack4); entityitem.setPickupDelay(i); this.world.spawnEntity(new EntityItem(player.world, player.posX, player.posY + (double)player.height, player.posZ, itemstack4)); } } } } } return true; } else { return false; } } }
  8. Well, I have this for my code to remove the helmet and spawn it on the ground: if(!this.world.isRemote) { /* my other hit detect code*/ player.setItemStackToSlot(EntityEquipmentSlot.HEAD, ItemStack.EMPTY); EntityItem entityitem = new EntityItem(player.world, player.posX, player.posY+1, player.posZ, itemstack); entityitem.setPickupDelay(i); this.world.spawnEntity(new EntityItem(player.world, player.posX, player.posY + (double)player.height, player.posZ, itemstack)); } It removes the helmet fine, but doesn't spawn it in the world. The int (i) changes depending on the difficulty of the world.
  9. Partial success! Changed if(!itemstack.isEmpty()) to if(itemstack != null) works and removes the Diamond Helmet. Now I just need it to spawn the item itself...
  10. Ok, I now have it calling the boolean, and right above if(!itemstack.IsEmpty()) I put System.out.println(itemstack) And it's giving me "0xtile.air@0" as the output? Please help, I am so confused.
  11. It's not even calling the public boolean attackEntityAsMob! What is wrong with this! I copied this from EntityCaveSpider and just slightly tweaked it because the original layout didn't work either.
×
×
  • Create New...

Important Information

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